Function nom::multi::many1_count
source · [−]pub fn many1_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 until it fails and returns the number of successful iterations. Fails if the embedded parser does not succeed at least once.
Arguments
fThe parser to apply.
use nom::multi::many1_count;
use nom::bytes::complete::tag;
fn parser(s: &str) -> IResult<&str, usize> {
many1_count(tag("abc"))(s)
}
assert_eq!(parser("abcabc"), Ok(("", 2)));
assert_eq!(parser("abc123"), Ok(("123", 1)));
assert_eq!(parser("123123"), Err(Err::Error(Error::new("123123", ErrorKind::Many1Count))));
assert_eq!(parser(""), Err(Err::Error(Error::new("", ErrorKind::Many1Count))));