kutil_std/iter/
converting.rs1#[derive(Clone, Debug)]
7pub struct ConvertingIterator<ItemT, InnerIteratorT, InnerItemT> {
8 iterator: InnerIteratorT,
9 convert: fn(InnerItemT) -> ItemT,
10}
11
12impl<ItemT, InnerIteratorT, InnerItemT> ConvertingIterator<ItemT, InnerIteratorT, InnerItemT> {
13 pub fn new(iterator: InnerIteratorT, convert: fn(InnerItemT) -> ItemT) -> Self {
15 Self { iterator, convert }
16 }
17}
18
19impl<ItemT, InnerIteratorT, InnerItemT> Iterator for ConvertingIterator<ItemT, InnerIteratorT, InnerItemT>
20where
21 InnerIteratorT: Iterator<Item = InnerItemT>,
22{
23 type Item = ItemT;
24
25 fn next(&mut self) -> Option<Self::Item> {
26 self.iterator.next().map(|inner_item| (self.convert)(inner_item))
27 }
28}