fn rule_internal_single<'a, E: ParseError<&'a str>>(input: &'a str) -> IResult<&str, Rule, E> {
    let mut parser = tuple((
        many0(alt((c_nl, recognize(WSP)))),
        rulename,
        defined_as,
        elements,
        opt(c_nl),
    ));

    let (input, (_, name, definition, elements, _)) = parser(input)?;

    let rule = match definition {
        Kind::Basic => Rule::new(&name, elements),
        Kind::Incremental => Rule::incremental(&name, elements),
    };

    Ok((input, rule))
}
/// Whitespace and comments before rule allowed, no trailing newline required.
Whitespace and comments before rule allowed, no trailing newline required.
Whitespace and comments before rule allowed no trailing newline required .
fn rule_internal_single<'a, E: ParseError<&'a str>>(input: &'a str) -> IResult<&str, Rule, E> {
    let mut parser = tuple((
        many0(alt((c_nl, recognize(WSP)))),
        rulename,
        defined_as,
        elements,
        opt(c_nl),
    ));
    let (input, (_, name, definition, elements, _)) = parser(input)?;
    let rule = match definition {
        Kind::Basic => Rule::new(&name, elements),
        Kind::Incremental => Rule::incremental(&name, elements),
    };
    Ok((input, rule))
}
fn rule_internal_single < ' a , E : ParseError < & ' a str > > ( input : & ' a str ) -> IResult < & str , Rule , E > { let mut parser = tuple ( ( many0 ( alt ( ( c_nl , recognize ( WSP ) ) ) ) , rulename , defined_as , elements , opt ( c_nl ) , ) ) ; let ( input , ( _ , name , definition , elements , _ ) ) = parser ( input ) ? ; let rule = match definition { Kind :: Basic => Rule :: new ( & name , elements ) , Kind :: Incremental => Rule :: incremental ( & name , elements ) , } ; Ok ( ( input , rule ) ) }
Whitespace and comments before rule allowed, no trailing newline required.
Whitespace and comments before rule allowed no trailing newline required .
input
&'a str
input
&'a str