From 53d7a104fc8d9548bfff00af9f28a5ccb8cb53e8 Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 30 Jul 2023 22:26:51 +0000 Subject: [PATCH] `FactoryExt` via `FactoryModeParse` --- src/rcore.rs | 2 +- src/rcore/addresses.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rcore.rs b/src/rcore.rs index 23fc846..3ff4a11 100644 --- a/src/rcore.rs +++ b/src/rcore.rs @@ -136,7 +136,7 @@ pub type ParseError<'a, Ctx, F> = >::ParseError; pub type ParseErrorA<'a, Ctx, A> = ParseError<'a, Ctx, Fctr<'a, Ctx, A>>; /// Extension trait for factories. -pub trait FactoryExt<'a, Ctx: Context<'a>>: FactoryBase<'a, Ctx> { +pub trait FactoryExt<'a, Ctx: Context<'a>>: FactoryModeParse<'a, Ctx> { /// Parse the object from a slice. fn parse_slice( &self, diff --git a/src/rcore/addresses.rs b/src/rcore/addresses.rs index 1b69f55..7bf3ce1 100644 --- a/src/rcore/addresses.rs +++ b/src/rcore/addresses.rs @@ -55,26 +55,26 @@ pub(super) trait InliningAddresses: Stream { impl InliningAddresses for D {} -fn _parse_slice<'a, Ctx: Context<'a>, F: FactoryParse<'a, Ctx>>( +fn _parse_slice<'a, Ctx: Context<'a>, F: FactoryModeParse<'a, Ctx>>( factory: &F, slice: &[u8], resolver: &Rc>, ) -> ParseResult<'a, Ctx, F> { let mut deserializer = SliceDeserializer::from(slice); - let mentionable = factory.deserialize(&mut DeCtxT { + let mentionable = F::seal(factory.mdeserialize(&mut DeCtxT { deserializer: &mut deserializer, resolver, addresses: &mut Addresses::start(), - } as &mut dyn DeCtx<'a, Ctx>)?; + } as &mut dyn DeCtx<'a, Ctx>)?); let tail = deserializer.read_all(); if tail.is_empty() { Ok(mentionable) } else { - factory.extend(mentionable, tail) + F::xseal(factory.mextend(F::prepare(mentionable), tail)) } } -impl<'a, Ctx: Context<'a>, F: FactoryParse<'a, Ctx>> FactoryExt<'a, Ctx> for F { +impl<'a, Ctx: Context<'a>, F: FactoryModeParse<'a, Ctx>> FactoryExt<'a, Ctx> for F { fn parse_slice( &self, slice: &[u8],