fn filter_try_fold<'a, T, Acc, R: Try<Output = Acc>>(
    predicate: &'a mut impl FnMut(&T) -> bool,
    fold: impl FnMut(Acc, T) -> R + 'a
) -> impl FnMut(Acc, T) -> R + 'a