macro_rules! parser_with_context { ($name:ident,$typ:ty,$inp:ident,$context:ident,$fnbody:block) => { pub fn $name<'c, I: Clone, O, E: nom::error::ParseError>( $context: NomContext<'c, I, O, E>, ) -> impl for<'a> FnMut(&'a str) -> IResult<&'a str, $typ, VerboseError<&'a str>> + 'c { |$inp| $fnbody } }; } pub(crate) use parser_with_context;