Function nom::multi::separated_list1 [−][src]
pub fn separated_list1<I, O, O2, E, F, G>(
sep: G,
f: F
) -> impl FnMut(I) -> IResult<I, Vec<O>, E> where
I: Clone + PartialEq,
F: Parser<I, O, E>,
G: Parser<I, O2, E>,
E: ParseError<I>,
This is supported on crate feature
alloc
only.Expand description
Alternates between two parsers to produce a list of elements. Fails if the element parser does not produce at least one element.
Arguments
sep
Parses the separator between list elements.f
Parses the elements of the list.
use nom::multi::separated_list1; use nom::bytes::complete::tag; fn parser(s: &str) -> IResult<&str, Vec<&str>> { separated_list1(tag("|"), tag("abc"))(s) } assert_eq!(parser("abc|abc|abc"), Ok(("", vec!["abc", "abc", "abc"]))); assert_eq!(parser("abc123abc"), Ok(("123abc", vec!["abc"]))); assert_eq!(parser("abc|def"), Ok(("|def", vec!["abc"]))); assert_eq!(parser(""), Err(Err::Error(Error::new("", ErrorKind::Tag)))); assert_eq!(parser("def|abc"), Err(Err::Error(Error::new("def|abc", ErrorKind::Tag))));