| 1351 | impl<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 | |
| 1378 | impl<A: Array> From<ArrayVec<A>> for TinyVec<A> { |