Function fold_many1
fn fold_many1<I, E, F, G, H, R>(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, calling g to gather the results.
This stops on Err::Error if there is at least one result. To instead chain an error up,
see [cut][crate::combinator::cut].
Arguments
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_many1;
use tag;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;