Skip to content

Commit f60fe7e

Browse files
Philippe-Choletphimuemue
authored andcommitted
TakeWhileInclusive::fold
1 parent 0ed6f79 commit f60fe7e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/take_while_inclusive.rs

+22
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,28 @@ where
6464
(0, self.iter.size_hint().1)
6565
}
6666
}
67+
68+
fn fold<B, Fold>(mut self, init: B, mut f: Fold) -> B
69+
where
70+
Fold: FnMut(B, Self::Item) -> B,
71+
{
72+
if self.done {
73+
init
74+
} else {
75+
let predicate = &mut self.predicate;
76+
self.iter
77+
.try_fold(init, |mut acc, item| {
78+
let is_ok = predicate(&item);
79+
acc = f(acc, item);
80+
if is_ok {
81+
Ok(acc)
82+
} else {
83+
Err(acc)
84+
}
85+
})
86+
.unwrap_or_else(|err| err)
87+
}
88+
}
6789
}
6890

6991
impl<I, F> FusedIterator for TakeWhileInclusive<I, F>

0 commit comments

Comments
 (0)