# Function nom::multi::many0_count

source · [−]

    pub fn many0_count<I, O, E, F>(f: F) -> impl FnMut(I) -> IResult<I, usize, E> where
        I: Clone + InputLength,
        F: Parser<I, O, E>,
        E: ParseError<I>,

Expand description

Repeats the embedded parser, counting the results

This stops on `Err::Error`. To instead chain an error up, see `cut`.

## Arguments

- `f` The parser to apply.

Note: if the parser passed in accepts empty inputs (like `alpha0` or `digit0`), `many0` will return an error, to prevent going into an infinite loop

    use nom::multi::many0_count;
    use nom::bytes::complete::tag;

    fn parser(s: &str) -> IResult<&str, usize> {
      many0_count(tag("abc"))(s)
    }

    assert_eq!(parser("abcabc"), Ok(("", 2)));
    assert_eq!(parser("abc123"), Ok(("123", 1)));
    assert_eq!(parser("123123"), Ok(("123123", 0)));
    assert_eq!(parser(""), Ok(("", 0)));