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