From c1b72500cd957baf2d85550791454dd27c311e58 Mon Sep 17 00:00:00 2001 From: bluss Date: Tue, 6 Feb 2018 19:25:58 +0100 Subject: [PATCH] REFAC Use clone_from_slice, extend in ArrayVec::clone_from This is just a cleanup of the code, with less repetition. --- src/lib.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 74c8848..b7c9292 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -893,22 +893,16 @@ impl Clone for ArrayVec fn clone_from(&mut self, rhs: &Self) { // recursive case for the common prefix let prefix = cmp::min(self.len(), rhs.len()); - { - let a = &mut self[..prefix]; - let b = &rhs[..prefix]; - for i in 0..prefix { - a[i].clone_from(&b[i]); - } - } + self[..prefix].clone_from_slice(&rhs[..prefix]); + if prefix < self.len() { // rhs was shorter for _ in 0..self.len() - prefix { self.pop(); } } else { - for elt in &rhs[self.len()..] { - self.push(elt.clone()); - } + let rhs_elems = rhs[self.len()..].iter().cloned(); + self.extend(rhs_elems); } } }