From c3baa8c0a7c0f90c3630c5eacc8f8783505c90ec Mon Sep 17 00:00:00 2001 From: Matt Ickstadt <mattico8@gmail.com> Date: Sat, 8 Apr 2017 16:43:30 -0500 Subject: [PATCH] Use Vec::splice impl in string::Splice::drop() --- src/libcollections/string.rs | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index e7085e94336..0a82fda09cb 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -2242,21 +2242,7 @@ impl<'a, 'b> Drop for Splice<'a, 'b> { fn drop(&mut self) { unsafe { let vec = (*self.string).as_mut_vec(); - let range_len = self.end - self.start; - let replacement_len = self.replace_with.len(); - let tail_len = vec.len() - self.end; - if replacement_len > range_len { - vec.reserve(replacement_len - range_len); - } - if replacement_len != range_len { - let src = vec.as_ptr().offset(self.end as isize); - let dst = vec.as_mut_ptr().offset((self.start + replacement_len) as isize); - ptr::copy(src, dst, tail_len); - } - let src = self.replace_with.as_ptr(); - let dst = vec.as_mut_ptr().offset(self.start as isize); - ptr::copy(src, dst, replacement_len); - vec.set_len(self.start + replacement_len + tail_len); + vec.splice(self.start..self.end, self.replace_with.bytes()); } } }