winnow::combinator

Function separated_pair

Source
pub fn separated_pair<Input, O1, Sep, O2, Error, P1, SepParser, P2>(
    first: P1,
    sep: SepParser,
    second: P2,
) -> impl Parser<Input, (O1, O2), Error>
where Input: Stream, Error: ParserError<Input>, P1: Parser<Input, O1, Error>, SepParser: Parser<Input, Sep, Error>, P2: Parser<Input, O2, Error>,
Expand description

Sequence three parsers, only returning the values of the first and third.

See also seq to generalize this across any number of fields.

ยงExample

use winnow::combinator::separated_pair;

let mut parser = separated_pair("abc", "|", "efg");

assert_eq!(parser.parse_peek("abc|efg"), Ok(("", ("abc", "efg"))));
assert_eq!(parser.parse_peek("abc|efghij"), Ok(("hij", ("abc", "efg"))));
assert_eq!(parser.parse_peek(""), Err(ErrMode::Backtrack(InputError::new("", ErrorKind::Tag))));
assert_eq!(parser.parse_peek("123"), Err(ErrMode::Backtrack(InputError::new("123", ErrorKind::Tag))));