From 364b5f806ccc7f27e97caef6a5abf995fb6c2b7f Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Wed, 3 Jun 2026 14:35:23 -0400 Subject: [PATCH] compiler/rust/smallvec: Optimize extend() Reviewed-by: Mel Henning Part-of: --- src/compiler/rust/smallvec.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) 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; + } + } } } }