Function fold_many_m_n
fn fold_many_m_n<I, E, F, G, H, R>(min: usize, max: usize, parser: F, init: H, g: G) -> impl Parser<I, Output = R, Error = E>
where
I: Clone + Input,
F: Parser<I, Error = E>,
G: FnMut(R, <F as Parser<I>>::Output) -> R,
H: FnMut() -> R,
E: ParseError<I>
Repeats the embedded parser m..=n times, calling g to gather the results
This stops before n when the parser returns Err::Error. To instead chain an error up, see
[cut][crate::combinator::cut].
Arguments
mThe minimum number of iterations.nThe maximum number of iterations.fThe parser to apply.initA function returning the initial value.gThe function that combines a result offwith the current accumulator.
Note: If the parser passed to many1 accepts empty inputs
(like alpha0 or digit0), many1 will return an error,
to prevent going into an infinite loop.
# use ;
use fold_many_m_n;
use tag;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;