MCPcopy Create free account
hub / github.com/Lokathor/tinyvec / extend

Method extend

src/tinyvec.rs:1353–1375  ·  view source on GitHub ↗
(&mut self, iter: T)

Source from the content-addressed store, hash-verified

1351impl<A: Array> Extend<A::Item> for TinyVec<A> {
1352 #[inline]
1353 fn extend<T: IntoIterator<Item = A::Item>>(&mut self, iter: T) {
1354 let iter = iter.into_iter();
1355 let (lower_bound, _) = iter.size_hint();
1356 self.reserve(lower_bound);
1357
1358 let a = match self {
1359 TinyVec::Heap(h) => return h.extend(iter),
1360 TinyVec::Inline(a) => a,
1361 };
1362
1363 let mut iter = a.fill(iter);
1364 let maybe = iter.next();
1365
1366 let surely = match maybe {
1367 Some(x) => x,
1368 None => return,
1369 };
1370
1371 let mut v = a.drain_to_vec_and_reserve(a.len());
1372 v.push(surely);
1373 v.extend(iter);
1374 *self = TinyVec::Heap(v);
1375 }
1376}
1377
1378impl<A: Array> From<ArrayVec<A>> for TinyVec<A> {

Callers 6

appendMethod · 0.45
insertMethod · 0.45
from_iterMethod · 0.45
reviterFunction · 0.45

Calls 8

reserveMethod · 0.80
into_iterMethod · 0.45
size_hintMethod · 0.45
fillMethod · 0.45
nextMethod · 0.45
lenMethod · 0.45
pushMethod · 0.45