pub trait Reduces: IntoIterator {
fn reduce<F>(self, sequence: F) -> Option<Self::Item>
where
Self: Sized,
Self::IntoIter: Iterator<Item = Self::Item>,
F: FnMut(Self::Item, Self::Item) -> Self::Item,
{ ... }
fn mapflat<T, J, F>(self, indicator: J, sequence: F) -> Option<T>
where
Self: Sized,
Self::IntoIter: Iterator<Item = Self::Item>,
J: FnMut(Self::Item) -> T,
F: FnMut(T, Self::Item) -> T,
{ ... }
fn mapreduce<T, J, F>(self, indicator: J, sequence: F) -> Option<T>
where
Self: Sized,
Self::IntoIter: Iterator<Item = Self::Item>,
J: FnMut(Self::Item) -> T,
F: FnMut(T, T) -> T,
{ ... }
}