Trait Fun
have
pub trait Fun { fn fun<F, D>(self, f: F) -> Self where F: FnMut(&Self) -> D; }
fn fun<F, D>(self, f: F) -> Self where F: FnMut(&Self) -> D,
impl<T> Fun for T
fn fun<F, D>(self, mut f: F) -> Self where F: FnMut(&Self) -> D,