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