FactoryExt via FactoryModeParse

This commit is contained in:
AF 2023-07-30 22:26:51 +00:00
parent 3306bf9cc0
commit 53d7a104fc
2 changed files with 6 additions and 6 deletions

View File

@ -136,7 +136,7 @@ pub type ParseError<'a, Ctx, F> = <F as FactoryBase<'a, Ctx>>::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,

View File

@ -55,26 +55,26 @@ pub(super) trait InliningAddresses<E>: Stream {
impl<E, D: ?Sized + Stream> InliningAddresses<E> 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<dyn Resolver<'a, Ctx>>,
) -> 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],