pub trait Reduce<T> { // Required method fn reduce<F>(self, f: F) -> Option<T> where Self: Sized, F: FnMut(T, T) -> T; }