compiler/rust/smallvec: Optimize extend()
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Reviewed-by: Mel Henning <mhenning@darkrefraction.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42005>
This commit is contained in:
Faith Ekstrand 2026-06-03 14:35:23 -04:00 committed by Marge Bot
parent 4e8595da21
commit 364b5f806c

View file

@ -126,8 +126,22 @@ impl<T> Extend<T> for SmallVec<T> {
where
I: IntoIterator<Item = T>,
{
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;
}
}
}
}
}