pub trait Parser<Input> {
type Output;
// Required method
fn parse(&self, input: Input, config: &ParserConfig) -> Result<Self::Output>;
// Provided methods
fn name(&self) -> &str { ... }
fn config(&self) -> ParserConfig { ... }
}