From 4a9c2c0c3bd3ca836dbcc950297d94451947c37a Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 29 Jul 2023 19:20:05 +0000 Subject: [PATCH] impl `FactoryModeProxy` --- src/rcore.rs | 3 ++- src/rcore/modes.rs | 14 ++++++++++++++ src/rstd/inlining/modes.rs | 18 ++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/rcore.rs b/src/rcore.rs index 33b64c6..a9e2ff8 100644 --- a/src/rcore.rs +++ b/src/rcore.rs @@ -33,7 +33,8 @@ pub use self::hashing::{Hash, HASH_SIZE, HASH_ZEROS}; pub use self::inctx::InCtx; pub use self::inlining::{Inlining, InliningExt, InliningResultExt}; pub use self::modes::{ - FactoryProxy, Mode, ParseMode, RegularFactory, RegularMode, WithMode, WithParseMode, + ExtensionResultM, FactoryModeParse, FactoryModeProxy, FactoryProxy, Mode, ParseMode, + ParseResultM, RegularFactory, RegularMode, WithMode, WithParseMode, }; pub use self::origin::{OFctr, Origin}; pub use self::point::Point; diff --git a/src/rcore/modes.rs b/src/rcore/modes.rs index 1bed4aa..52b0393 100644 --- a/src/rcore/modes.rs +++ b/src/rcore/modes.rs @@ -175,3 +175,17 @@ impl<'a, Ctx: Context<'a>, F: RegularFactory<'a, Ctx>> FactoryProxy<'a, Ctx> f.rextend(mentionable, tail) } } + +impl<'a, Ctx: Context<'a>, F: RegularFactory<'a, Ctx>> FactoryModeProxy<'a, Ctx> + for WithMode +{ + type F = F; + + fn pmdeserialize>(f: &Self::F, inctx: I) -> ParseResultM<'a, Ctx, F, I> { + f.rdeserialize(inctx) + } + + fn pmextend(f: &F, mentionable: Mtbl<'a, Ctx, F>, tail: &[u8]) -> ExtensionResultM<'a, Ctx, F> { + f.rextend(mentionable, tail) + } +} diff --git a/src/rstd/inlining/modes.rs b/src/rstd/inlining/modes.rs index ce7ce18..86876fa 100644 --- a/src/rstd/inlining/modes.rs +++ b/src/rstd/inlining/modes.rs @@ -60,6 +60,24 @@ impl<'a, Ctx: Context<'a>, F: InlineableFactory<'a, Ctx>> FactoryProxy<'a, Ctx> } } +impl<'a, Ctx: Context<'a>, F: InlineableFactory<'a, Ctx>> FactoryModeProxy<'a, Ctx> + for WithMode +{ + type F = F; + + fn pmdeserialize>(f: &Self::F, inctx: I) -> ParseResultM<'a, Ctx, F, I> { + f.ideserialize(inctx) + } + + fn pmextend( + f: &F, + _mentionable: Mtbl<'a, Ctx, F>, + tail: &[u8], + ) -> ExtensionResultM<'a, Ctx, F> { + f.extension_error(tail) + } +} + impl AtomicProxy for WithMode { type A = A;