Skip to content

Commit cea171b

Browse files
author
Julian Orth
committed
improve clone_from_slice performance
1 parent cd1fa91 commit cea171b

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/libcore/slice.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -1126,13 +1126,16 @@ pub trait MutableCloneableSlice<T> {
11261126
}
11271127

11281128
#[unstable = "trait is unstable"]
1129-
impl<'a, T:Clone> MutableCloneableSlice<T> for &'a mut [T] {
1129+
impl<'a, T: Clone> MutableCloneableSlice<T> for &'a mut [T] {
11301130
#[inline]
11311131
fn clone_from_slice(self, src: &[T]) -> uint {
1132-
for (a, b) in self.iter_mut().zip(src.iter()) {
1133-
a.clone_from(b);
1132+
let min = cmp::min(self.len(), src.len());
1133+
let dst = self.slice_to_mut(min);
1134+
let src = src.slice_to(min);
1135+
for i in range(0, min) {
1136+
dst[i].clone_from(&src[i]);
11341137
}
1135-
cmp::min(self.len(), src.len())
1138+
min
11361139
}
11371140
}
11381141

0 commit comments

Comments
 (0)