Function combine::sep_end_by1
source · [−]pub fn sep_end_by1<F, Input, P, S>(
parser: P,
separator: S
) -> SepEndBy1<F, P, S> where
Input: Stream,
F: Extend<P::Output> + Default,
P: Parser<Input>,
S: Parser<Input>,
Expand description
Parses parser
one or more times separated and ended by separator
, returning a collection
with the values from p
.
If the returned collection cannot be inferred type annotations must be
supplied, either by annotating the resulting type binding let collection: Vec<_> = ...
or by
specializing when calling sep_by
, sep_by1::<Vec<_>, _, _>(...)
.
let mut parser = sep_end_by1(digit(), token(';'));
let result_ok = parser.easy_parse(position::Stream::new("1;2;3;"))
.map(|(vec, state)| (vec, state.input));
assert_eq!(result_ok, Ok((vec!['1', '2', '3'], "")));
let result_err = parser.easy_parse(position::Stream::new(""));
assert_eq!(result_err, Err(easy::Errors {
position: SourcePosition::default(),
errors: vec![
easy::Error::end_of_input(),
easy::Error::Expected("digit".into())
]
}));