diff --git a/src/iter.rs b/src/iter.rs index 25ecdca..c754f81 100644 --- a/src/iter.rs +++ b/src/iter.rs @@ -42,3 +42,20 @@ pub trait NextIf: Iterator + Clone { } impl NextIf for T where T: Iterator + Clone {} + +pub trait AdvanceWhile: Iterator + Clone { + /// Advance the iterator while `pred` returns true. + fn advance_while(&mut self, mut pred: F) + where + F: FnMut(&Self::Item) -> bool, + { + loop { + match self.next_if(&mut pred) { + Some(_) => {} + None => break, + } + } + } +} + +impl AdvanceWhile for T where T: Iterator + Clone {}