Skip to content

Commit c53f8a9

Browse files
committed
auto merge of #17960 : mahkoh/rust/clone_from_slice, r=pcwalton
Old vs. New vs. Vec::push_all ``` test slice ... bench: 3091942 ns/iter (+/- 54460) test slice_new ... bench: 1800065 ns/iter (+/- 69513) test vec ... bench: 1804805 ns/iter (+/- 75609) ```
2 parents 56d544f + cea171b commit c53f8a9

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

Diff for: src/libcore/slice.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -853,13 +853,16 @@ pub trait MutableCloneableSlice<T> {
853853
}
854854

855855
#[unstable = "trait is unstable"]
856-
impl<'a, T:Clone> MutableCloneableSlice<T> for &'a mut [T] {
856+
impl<'a, T: Clone> MutableCloneableSlice<T> for &'a mut [T] {
857857
#[inline]
858858
fn clone_from_slice(self, src: &[T]) -> uint {
859-
for (a, b) in self.iter_mut().zip(src.iter()) {
860-
a.clone_from(b);
859+
let min = cmp::min(self.len(), src.len());
860+
let dst = self.slice_to_mut(min);
861+
let src = src.slice_to(min);
862+
for i in range(0, min) {
863+
dst[i].clone_from(&src[i]);
861864
}
862-
cmp::min(self.len(), src.len())
865+
min
863866
}
864867
}
865868

0 commit comments

Comments
 (0)