pub fn pair<I, O1, O2, E: ParseError<I>, F, G>(
first: F,
second: G
) -> impl FnMut(I) -> IResult<I, (O1, O2), E>where
F: Parser<I, O1, E>,
G: Parser<I, O2, E>,
Expand description
Gets an object from the first parser, then gets another object from the second parser.
Arguments
first
The first parser to apply.second
The second parser to apply.
use nom::sequence::pair;
use nom::bytes::complete::tag;
let mut parser = pair(tag("abc"), tag("efg"));
assert_eq!(parser("abcefg"), Ok(("", ("abc", "efg"))));
assert_eq!(parser("abcefghij"), Ok(("hij", ("abc", "efg"))));
assert_eq!(parser(""), Err(Err::Error(("", ErrorKind::Tag))));
assert_eq!(parser("123"), Err(Err::Error(("123", ErrorKind::Tag))));