Skip to content

Commit c3baa8c

Browse files
committed
Use Vec::splice impl in string::Splice::drop()
1 parent cec00ba commit c3baa8c

File tree

1 file changed

+1
-15
lines changed

1 file changed

+1
-15
lines changed

src/libcollections/string.rs

+1-15
Original file line numberDiff line numberDiff line change
@@ -2242,21 +2242,7 @@ impl<'a, 'b> Drop for Splice<'a, 'b> {
22422242
fn drop(&mut self) {
22432243
unsafe {
22442244
let vec = (*self.string).as_mut_vec();
2245-
let range_len = self.end - self.start;
2246-
let replacement_len = self.replace_with.len();
2247-
let tail_len = vec.len() - self.end;
2248-
if replacement_len > range_len {
2249-
vec.reserve(replacement_len - range_len);
2250-
}
2251-
if replacement_len != range_len {
2252-
let src = vec.as_ptr().offset(self.end as isize);
2253-
let dst = vec.as_mut_ptr().offset((self.start + replacement_len) as isize);
2254-
ptr::copy(src, dst, tail_len);
2255-
}
2256-
let src = self.replace_with.as_ptr();
2257-
let dst = vec.as_mut_ptr().offset(self.start as isize);
2258-
ptr::copy(src, dst, replacement_len);
2259-
vec.set_len(self.start + replacement_len + tail_len);
2245+
vec.splice(self.start..self.end, self.replace_with.bytes());
22602246
}
22612247
}
22622248
}

0 commit comments

Comments
 (0)