Skip to content

Commit e9537f9

Browse files
committed
Specialize FlatMap's fold
1 parent 8178ce3 commit e9537f9

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,20 @@ where
10471047
fn get(&self) -> Option<&Self::Item> {
10481048
self.sub_iter.as_ref().and_then(J::get)
10491049
}
1050+
1051+
#[inline]
1052+
fn fold<Acc, Fold>(self, init: Acc, mut fold: Fold) -> Acc
1053+
where
1054+
Self: Sized,
1055+
Fold: FnMut(Acc, &Self::Item) -> Acc,
1056+
{
1057+
let mut acc = init;
1058+
if let Some(iter) = self.sub_iter {
1059+
acc = iter.fold(acc, &mut fold);
1060+
}
1061+
let mut f = self.f;
1062+
self.it.fold(acc, |acc, item| f(item).fold(acc, &mut fold))
1063+
}
10501064
}
10511065

10521066
#[derive(Copy, Clone, Debug)]

0 commit comments

Comments
 (0)