reorder stack definitions

This commit is contained in:
AF 2023-07-30 22:52:48 +00:00
parent f2ff6b8e9d
commit 6935b072dd

View File

@ -130,6 +130,43 @@ where
} }
} }
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + InliningFactory<'a, Ctx>> CInliningFactory<'a, Ctx>
for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
fn cextension_error(&self, tail: &[u8]) -> Self::ParseError {
StackParseError::Element(self.element_factory.extension_error(tail))
}
fn cideserialize<I: InCtx<'a, Ctx>>(&self, inctx: I) -> IParseResult<'a, Ctx, Self, I> {
let (rest, inctx) = self.parse_point(inctx)?;
let (element, inctx) = self
.element_factory
.ideserialize(inctx)
.map_err(StackParseError::Element)?;
Ok((StackNode { rest, element }, inctx))
}
}
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + FixedSizeFactory<'a, Ctx>>
FixedSizeFactory<'a, Ctx> for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
fn size(&self) -> usize {
Stack::<'a, Ctx, F::Mtbl>::SIZE + self.element_factory.size()
}
}
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + ConstSizeFactory<'a, Ctx>>
ConstSizeFactory<'a, Ctx> for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
const SIZE: usize = Stack::<'a, Ctx, F::Mtbl>::SIZE + F::SIZE;
}
/// See [`StackVecResult`]. /// See [`StackVecResult`].
pub type StackFaiure<'a, Ctx, A> = ResolutionFailure<'a, Ctx, StackNode<'a, Ctx, A>>; pub type StackFaiure<'a, Ctx, A> = ResolutionFailure<'a, Ctx, StackNode<'a, Ctx, A>>;
@ -206,43 +243,6 @@ where
} }
} }
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + InliningFactory<'a, Ctx>> CInliningFactory<'a, Ctx>
for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
fn cextension_error(&self, tail: &[u8]) -> Self::ParseError {
StackParseError::Element(self.element_factory.extension_error(tail))
}
fn cideserialize<I: InCtx<'a, Ctx>>(&self, inctx: I) -> IParseResult<'a, Ctx, Self, I> {
let (rest, inctx) = self.parse_point(inctx)?;
let (element, inctx) = self
.element_factory
.ideserialize(inctx)
.map_err(StackParseError::Element)?;
Ok((StackNode { rest, element }, inctx))
}
}
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + FixedSizeFactory<'a, Ctx>>
FixedSizeFactory<'a, Ctx> for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
fn size(&self) -> usize {
Stack::<'a, Ctx, F::Mtbl>::SIZE + self.element_factory.size()
}
}
impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + ConstSizeFactory<'a, Ctx>>
ConstSizeFactory<'a, Ctx> for StackNodeFactory<F>
where
F::Mtbl: MentionableTop<'a, Ctx>,
{
const SIZE: usize = Stack::<'a, Ctx, F::Mtbl>::SIZE + F::SIZE;
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::rc::Rc; use std::rc::Rc;