Skip to content

Commit 9169934

Browse files
committed
Use Vec::extend in SmallVec::extend when applicable
1 parent a3f519d commit 9169934

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/librustc_data_structures/small_vec.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,18 @@ impl<A: Array> FromIterator<A::Element> for SmallVec<A> {
169169

170170
impl<A: Array> Extend<A::Element> for SmallVec<A> {
171171
fn extend<I: IntoIterator<Item=A::Element>>(&mut self, iter: I) {
172-
let iter = iter.into_iter();
173-
self.reserve(iter.size_hint().0);
174-
for el in iter {
175-
self.push(el);
172+
if self.is_array() {
173+
let iter = iter.into_iter();
174+
self.reserve(iter.size_hint().0);
175+
176+
for el in iter {
177+
self.push(el);
178+
}
179+
} else {
180+
match self.0 {
181+
AccumulateVec::Heap(ref mut vec) => vec.extend(iter),
182+
_ => unreachable!()
183+
}
176184
}
177185
}
178186
}

0 commit comments

Comments
 (0)