From a23fc1720b2d8ea5a285c1e7d261ec42e68b0304 Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 30 Jul 2023 22:33:52 +0000 Subject: [PATCH] `ParseSealed` --- src/mode.rs | 5 +++++ src/mode/inlining.rs | 3 +++ src/mode/regular.rs | 3 +++ 3 files changed, 11 insertions(+) diff --git a/src/mode.rs b/src/mode.rs index bd4b071..bea4c98 100644 --- a/src/mode.rs +++ b/src/mode.rs @@ -29,6 +29,8 @@ pub use self::stream::{Stream, StreamExt, StreamResultExt}; /// See [`ModeResult`]. pub type ParseSuccess = ::ParseSuccess; +pub type ParseSealed = ::ParseSealed; + /// [`Mode`] equivalent of [`ParseResult`] for extension. /// /// [`ParseResult`]: crate::rcore::ParseResult @@ -59,6 +61,9 @@ pub trait Mode { /// (`I`, usually [`Stream`]). type ParseSuccess; + /// Parse success with parser discarded. + type ParseSealed; + /// Result of extending the value, failing sometimes or always. type ExtensionResult; diff --git a/src/mode/inlining.rs b/src/mode/inlining.rs index a691e53..b064d81 100644 --- a/src/mode/inlining.rs +++ b/src/mode/inlining.rs @@ -10,6 +10,9 @@ impl Mode for InliningMode { /// Keeps the parser. type ParseSuccess = (A, I); + /// Keep value as is. + type ParseSealed = A; + /// Always fails. type ExtensionResult = E; diff --git a/src/mode/regular.rs b/src/mode/regular.rs index 74919ad..934cb61 100644 --- a/src/mode/regular.rs +++ b/src/mode/regular.rs @@ -10,6 +10,9 @@ impl Mode for RegularMode { /// Discards the parser. type ParseSuccess = A; + /// Keep value as is. + type ParseSealed = A; + /// Tries to extend the value. type ExtensionResult = Result;