pub trait ParserStateful<I, O, E = ()>where
I: Input,{
// Required method
fn parse(&mut self, input: I) -> Result<I, O, E>;
// Provided method
fn map<F, O2>(self, f: F) -> Map<Self, F, O>
where Self: Sized,
F: FnMut(O) -> O2 { ... }
}