fn filter_map_try_fold<'a, T, B, Acc, R: Try<Output = Acc>>(
    f: &'a mut impl FnMut(T) -> Option<B>,
    fold: impl FnMut(Acc, B) -> R + 'a
) -> impl FnMut(Acc, T) -> R + 'a