pub trait Pipe { // Provided method fn pipe<O, F: FnOnce(Self) -> O>(self, f: F) -> O where Self: Sized { ... } }