From 9db415a7c94a65c2ce2892a76861138bd76a8e62 Mon Sep 17 00:00:00 2001 From: Janis Date: Fri, 8 Aug 2025 00:57:28 +0200 Subject: [PATCH] add AdvanceWhile trait for conditional iterator advancement --- src/iter.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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 {}