Expand description
Error management
Errors are designed with multiple needs in mind:
- Accumulate more context as the error goes up the parser chain
- Distinguish between recoverable errors, unrecoverable errors, and more data is needed
- Have a very low overhead, as errors are often discarded by the calling parser (examples:
many0,alt) - Can be modified according to the user’s needs, because some languages need a lot more information
- Help thread-through the stream
To abstract these needs away from the user, generally winnow parsers use the PResult
alias, rather than Result. Parser::parse is a top-level operation
that can help convert to a Result for integrating with your application’s error reporting.
Error types include:
()ErrorKindInputError(mostly for testing)ContextErrorTreeError(mostly for testing)- [Custom errors][crate::_topic::error]
Structs
- Accumulate context while backtracking errors
- Capture input on error
- See
Parser::parse - VerboseErrorDeprecatedDeprecated, replaced with
ContextError
Enums
- Add parse error state to
ParserErrors - Provide some minor debug context for errors
- Contains information on needed data if a parser returned
Incomplete - Additional parse context for
ContextErroradded viaParser::context - See
StrContext - Trace all error paths, particularly for tests
- See
TreeError::Stack - VerboseErrorKindDeprecatedDeprecated, replaced with
ContextError
Traits
- Used by
Parser::contextto add custom data to error while backtracking - Equivalent of
Fromimplementation to avoid orphan rules in bits parsers - Create a new error with an external error, from
std::str::FromStr - The basic
Parsertrait for errors
Type Aliases
- For use with
Parser::parse_peekwhich allows the input stream to be threaded through a parser. - For use with
Parser::parse_next