REFAC Use clone_from_slice, extend in ArrayVec::clone_from
This is just a cleanup of the code, with less repetition.
This commit is contained in:
+4
-10
@@ -893,22 +893,16 @@ impl<A: Array> Clone for ArrayVec<A>
|
|||||||
fn clone_from(&mut self, rhs: &Self) {
|
fn clone_from(&mut self, rhs: &Self) {
|
||||||
// recursive case for the common prefix
|
// recursive case for the common prefix
|
||||||
let prefix = cmp::min(self.len(), rhs.len());
|
let prefix = cmp::min(self.len(), rhs.len());
|
||||||
{
|
self[..prefix].clone_from_slice(&rhs[..prefix]);
|
||||||
let a = &mut self[..prefix];
|
|
||||||
let b = &rhs[..prefix];
|
|
||||||
for i in 0..prefix {
|
|
||||||
a[i].clone_from(&b[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if prefix < self.len() {
|
if prefix < self.len() {
|
||||||
// rhs was shorter
|
// rhs was shorter
|
||||||
for _ in 0..self.len() - prefix {
|
for _ in 0..self.len() - prefix {
|
||||||
self.pop();
|
self.pop();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for elt in &rhs[self.len()..] {
|
let rhs_elems = rhs[self.len()..].iter().cloned();
|
||||||
self.push(elt.clone());
|
self.extend(rhs_elems);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user