ParseSealed

This commit is contained in:
AF 2023-07-30 22:33:52 +00:00
parent 53d7a104fc
commit a23fc1720b
3 changed files with 11 additions and 0 deletions

View File

@ -29,6 +29,8 @@ pub use self::stream::{Stream, StreamExt, StreamResultExt};
/// See [`ModeResult`]. /// See [`ModeResult`].
pub type ParseSuccess<M, A, I> = <M as Mode>::ParseSuccess<A, I>; pub type ParseSuccess<M, A, I> = <M as Mode>::ParseSuccess<A, I>;
pub type ParseSealed<M, A> = <M as Mode>::ParseSealed<A>;
/// [`Mode`] equivalent of [`ParseResult`] for extension. /// [`Mode`] equivalent of [`ParseResult`] for extension.
/// ///
/// [`ParseResult`]: crate::rcore::ParseResult /// [`ParseResult`]: crate::rcore::ParseResult
@ -59,6 +61,9 @@ pub trait Mode {
/// (`I`, usually [`Stream`]). /// (`I`, usually [`Stream`]).
type ParseSuccess<A, I>; type ParseSuccess<A, I>;
/// Parse success with parser discarded.
type ParseSealed<A>;
/// Result of extending the value, failing sometimes or always. /// Result of extending the value, failing sometimes or always.
type ExtensionResult<A, E>; type ExtensionResult<A, E>;

View File

@ -10,6 +10,9 @@ impl Mode for InliningMode {
/// Keeps the parser. /// Keeps the parser.
type ParseSuccess<A, I> = (A, I); type ParseSuccess<A, I> = (A, I);
/// Keep value as is.
type ParseSealed<A> = A;
/// Always fails. /// Always fails.
type ExtensionResult<A, E> = E; type ExtensionResult<A, E> = E;

View File

@ -10,6 +10,9 @@ impl Mode for RegularMode {
/// Discards the parser. /// Discards the parser.
type ParseSuccess<A, I> = A; type ParseSuccess<A, I> = A;
/// Keep value as is.
type ParseSealed<A> = A;
/// Tries to extend the value. /// Tries to extend the value.
type ExtensionResult<A, E> = Result<A, E>; type ExtensionResult<A, E> = Result<A, E>;