diff --git a/src/lib.rs b/src/lib.rs index 3cf70d3..97fb92b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2371,7 +2371,8 @@ impl Default for ThinVec { impl FromIterator for ThinVec { #[inline] fn from_iter>(iter: I) -> ThinVec { - let mut vec = ThinVec::new(); + let iter = iter.into_iter(); + let mut vec = ThinVec::with_capacity(iter.size_hint().0); vec.extend(iter); vec } @@ -3600,6 +3601,15 @@ mod tests { } } + #[test] + fn test_collect_capacity() { + for i in 0..20 { + let v = (0..i).into_iter().collect::>(); + assert_eq!(v.len(), i); + assert_eq!(v.capacity(), i); + } + } + #[test] fn test_clone() { let mut v = ThinVec::::new();