Trait combine::Parser [] [src]

pub trait Parser {
    type Input: Stream;
    type Output;
    fn parse(&mut self, input: Self::Input) -> Result<(Self::Output, Self::Input)ParseError<Self::Input>> { ... }
    fn parse_state(&mut self, input: Self::Input) -> ParseResult<Self::Output, Self::Input> { ... }
    fn parse_lazy(&mut self, input: Self::Input) -> ParseResult<Self::Output, Self::Input> { ... }
    fn add_error(&mut self, _error: &mut ParseError<Self::Input>) { ... }
}

By implementing the Parser trait a type says that it can be used to parse an input stream into the type Output.

All methods have a default implementation but there needs to be at least an implementation of parse_state orparse_lazy. If parse_lazy is implemented an implementation of add_error is also recommended to improve error reporting.

Associated Types

type Input: Stream

The type which is take as input for the parser. The type must implement the Stream trait which allows the parser to read item from the type.

type Output

The type which is returned if the parser is successful.

Provided Methods

fn parse(&mut self, input: Self::Input) -> Result<(Self::Output, Self::Input)ParseError<Self::Input>>

Entrypoint of the parser Takes some input and tries to parse it returning a ParseResult

fn parse_state(&mut self, input: Self::Input) -> ParseResult<Self::Output, Self::Input>

Parses using the state input by calling Stream::uncons one or more times On success returns Ok((value, new_state)) on failure it returns Err(error)

fn parse_lazy(&mut self, input: Self::Input) -> ParseResult<Self::Output, Self::Input>

Specialized version of parse_state where the parser does not need to add an error to the ParseError when it does not consume any input before encountering the error. Instead the error can be added later through the add_error method

fn add_error(&mut self, _error: &mut ParseError<Self::Input>)

Adds the first error that would normally be returned by this parser if it failed

Implementors