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 {}
|
||||
|
||||
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