1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use crate::ParseIterator; pub struct ParseIter<I, F> { i: I, f: F } impl<I, F> ParseIter<I, F> { pub(crate) fn new(i: I, f: F) -> Self { Self {i, f} } } impl<'s, I, F, O> Iterator for ParseIter<I, F> where I: ParseIterator<'s>, F: FnMut(&mut I) -> Option<O> { type Item = O; fn next(&mut self) -> Option<O> { (self.f)(&mut self.i) } }