add AdvanceWhile trait for conditional iterator advancement
This commit is contained in:
parent
1aee8d2f1c
commit
9db415a7c9
17
src/iter.rs
17
src/iter.rs
|
|
@ -42,3 +42,20 @@ pub trait NextIf<I>: Iterator<Item = I> + Clone {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<I, T> NextIf<I> for T where T: Iterator<Item = I> + Clone {}
|
impl<I, T> NextIf<I> for T where T: Iterator<Item = I> + Clone {}
|
||||||
|
|
||||||
|
pub trait AdvanceWhile<I>: Iterator<Item = I> + Clone {
|
||||||
|
/// Advance the iterator while `pred` returns true.
|
||||||
|
fn advance_while<F>(&mut self, mut pred: F)
|
||||||
|
where
|
||||||
|
F: FnMut(&Self::Item) -> bool,
|
||||||
|
{
|
||||||
|
loop {
|
||||||
|
match self.next_if(&mut pred) {
|
||||||
|
Some(_) => {}
|
||||||
|
None => break,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<I, T> AdvanceWhile<I> for T where T: Iterator<Item = I> + Clone {}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue