add AdvanceWhile trait for conditional iterator advancement

This commit is contained in:
Janis 2025-08-08 00:57:28 +02:00
parent 1aee8d2f1c
commit 9db415a7c9

View file

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