pub trait Reduce<T>: Stream { // Provided method fn reduce<F, Fut>(self, f: F) -> Reducer<Self, T, F, Fut> ⓘ where Self: Sized, F: FnMut(T, Self::Item) -> Fut, Fut: Future<Output = T> { ... } }