Function nom::sequence::separated_pair
source · pub fn separated_pair<I, O1, O2, O3, E: ParseError<I>, F, G, H>(
first: F,
sep: G,
second: H
) -> impl FnMut(I) -> IResult<I, (O1, O3), E>where
F: Parser<I, O1, E>,
G: Parser<I, O2, E>,
H: Parser<I, O3, E>,
Expand description
Gets an object from the first parser, then matches an object from the sep_parser and discards it, then gets another object from the second parser.
Arguments
first
The first parser to apply.sep
The separator parser to apply.second
The second parser to apply.
use nom::sequence::separated_pair;
use nom::bytes::complete::tag;
let mut parser = separated_pair(tag("abc"), tag("|"), tag("efg"));
assert_eq!(parser("abc|efg"), Ok(("", ("abc", "efg"))));
assert_eq!(parser("abc|efghij"), Ok(("hij", ("abc", "efg"))));
assert_eq!(parser(""), Err(Err::Error(("", ErrorKind::Tag))));
assert_eq!(parser("123"), Err(Err::Error(("123", ErrorKind::Tag))));