nodeagg/
iter.rs

1pub struct ConcatIterator<'a, T> {
2    pub itrs: Vec<Box<dyn Iterator<Item = T> + 'a>>,
3}
4
5impl<T> Iterator for ConcatIterator<'_, T> {
6    type Item = T;
7    fn next(&mut self) -> Option<Self::Item> {
8        let mut index: usize = 0;
9        loop {
10            match self.itrs.get_mut(index) {
11                None => break None,
12                Some(e) => match e.next() {
13                    None => index += 1,
14                    Some(v) => break Some(v),
15                },
16            }
17        }
18    }
19}
20
21pub type NodeaggIterator<'a> = itertools::Unique<ConcatIterator<'a, String>>;