pub trait Format {
type Input;
// Required method
fn transform(&self, input: Self::Input) -> Option<Self::Input>;
// Provided method
fn chain<F>(self, next: F) -> ChainedFormat<Self, F>
where Self: Sized,
F: Format<Input = Self::Input> { ... }
}