mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-09 23:08:18 +02:00
compiler/rust/smallvec: Optimize extend()
Reviewed-by: Mel Henning <mhenning@darkrefraction.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42005>
This commit is contained in:
parent
4e8595da21
commit
364b5f806c
1 changed files with 16 additions and 2 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue