Function chomp::combinators::count
[−]
[src]
pub fn count<I: Input, T, E, F, U>(
i: I,
num: usize,
p: F
) -> ParseResult<I, T, E> where
F: FnMut(I) -> ParseResult<I, U, E>,
T: FromIterator<U>,
Applies the parser p
exactly num
times collecting all items into T: FromIterator
.
use chomp::prelude::*; fn parse<I: U8Input>(i: I) -> SimpleResult<I, Vec<u8>> { count(i, 2, |i| token(i, b'a')) } assert_eq!(parse_only(parse, b"a "), Err((&b" "[..], Error::expected(b'a')))); assert_eq!(parse_only(parse, b"aa "), Ok(vec![b'a', b'a'])); let with_remainder = |i| parse(i).bind(|i, d| take_remainder(i).map(|r| (r, d))); assert_eq!(parse_only(with_remainder, b"aaa"), Ok((&b"a"[..], vec![b'a', b'a'])));