From 0d2d0334152f0025b00a826482f130f499e7d627 Mon Sep 17 00:00:00 2001 From: The8472 Date: Sat, 25 Jan 2020 15:01:39 +0100 Subject: [PATCH] replace unsafe ptr::write with deref-write, benchmarks show no difference --- library/alloc/src/vec.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/library/alloc/src/vec.rs b/library/alloc/src/vec.rs index 9b7f2af3ba9e..d2f92b7c0082 100644 --- a/library/alloc/src/vec.rs +++ b/library/alloc/src/vec.rs @@ -2086,11 +2086,8 @@ impl Extend for Vec { >::spec_extend(self, iter.into_iter()) } else { // if self has no allocation then use the more powerful from_iter specializations - let other = SpecFrom::from_iter(iter.into_iter()); - // replace self, don't run drop since self was empty - unsafe { - ptr::write(self, other); - } + // and overwrite self + *self = SpecFrom::from_iter(iter.into_iter()); } } @@ -2544,11 +2541,8 @@ impl<'a, T: 'a + Copy> Extend<&'a T> for Vec { self.spec_extend(iter.into_iter()) } else { // if self has no allocation then use the more powerful from_iter specializations - let other = SpecFrom::from_iter(iter.into_iter()); - // replace self, don't run drop since self was empty - unsafe { - ptr::write(self, other); - } + // and overwrite self + *self = SpecFrom::from_iter(iter.into_iter()); } }