pub trait Parser<'a>: Sized { fn parse(input: &'a str) -> IResult<&'a str, Self>; }
fn parse(input: &'a str) -> IResult<&'a str, Self>