From 186d75008ce76ec5e5a0f7b6889d68f8a878309a Mon Sep 17 00:00:00 2001 From: Matt Brubeck Date: Thu, 2 Nov 2017 16:23:44 -0700 Subject: [PATCH] Pre-allocate in functions that return new SmallVecs --- lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib.rs b/lib.rs index 382fe0d6..14994f44 100644 --- a/lib.rs +++ b/lib.rs @@ -790,7 +790,8 @@ where A::Item: Deserialize<'de>, where B: SeqAccess<'de>, { - let mut values = SmallVec::new(); + let len = seq.size_hint().unwrap_or(0); + let mut values = SmallVec::with_capacity(len); while let Some(value) = seq.next_element()? { values.push(value); @@ -912,7 +913,7 @@ impl Drop for SmallVec { impl Clone for SmallVec where A::Item: Clone { fn clone(&self) -> SmallVec { - let mut new_vector = SmallVec::new(); + let mut new_vector = SmallVec::with_capacity(self.len()); for element in self.iter() { new_vector.push((*element).clone()) }