diff --git a/src/compiler/rust/smallvec.rs b/src/compiler/rust/smallvec.rs index 63c554dabd7..ba429b0a488 100644 --- a/src/compiler/rust/smallvec.rs +++ b/src/compiler/rust/smallvec.rs @@ -126,8 +126,22 @@ impl Extend for SmallVec { where I: IntoIterator, { - for i in iter { - self.push(i) + let mut iter = iter.into_iter(); + loop { + match &mut self.0 { + SmallVecImpl::None | SmallVecImpl::One(_) => { + if let Some(i) = iter.next() { + self.push(i); + } else { + // We ran out of items + return; + } + } + SmallVecImpl::Many(v) => { + v.extend(iter); + return; + } + } } } }