kutil_std/foster/
iterator.rs

1use super::{super::iter::*, foster::*};
2
3//
4// FosterIterator
5//
6
7/// [Foster] [Iterator].
8///
9/// See [ConvertingIterator].
10pub type FosterIterator<ItemT, OwnedItemT, FosteredItemT, OwnedIteratorT, FosteredIteratorT> = Foster<
11    ConvertingIterator<ItemT, OwnedIteratorT, OwnedItemT>,
12    ConvertingIterator<ItemT, FosteredIteratorT, FosteredItemT>,
13>;
14
15impl<ItemT, OwnedItemT, FosteredItemT, OwnedIteratorT, FosteredIteratorT> Iterator
16    for FosterIterator<ItemT, OwnedItemT, FosteredItemT, OwnedIteratorT, FosteredIteratorT>
17where
18    OwnedIteratorT: Iterator<Item = OwnedItemT>,
19    FosteredIteratorT: Iterator<Item = FosteredItemT>,
20{
21    type Item = ItemT;
22
23    fn next(&mut self) -> Option<Self::Item> {
24        match self {
25            Self::Owned(iterator) => iterator.next(),
26            Self::Fostered(iterator) => iterator.next(),
27        }
28    }
29}