From 6935b072dde8a57d1d05a6b700922cbb8c5a99ec Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 30 Jul 2023 22:52:48 +0000 Subject: [PATCH] reorder stack definitions --- src/rstd/collections/stack.rs | 74 +++++++++++++++++------------------ 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/src/rstd/collections/stack.rs b/src/rstd/collections/stack.rs index 2b17b41..e3494ce 100644 --- a/src/rstd/collections/stack.rs +++ b/src/rstd/collections/stack.rs @@ -130,6 +130,43 @@ where } } +impl<'a, Ctx: Context<'a>, F: Factory<'a, Ctx> + InliningFactory<'a, Ctx>> CInliningFactory<'a, Ctx> + for StackNodeFactory +where + F::Mtbl: MentionableTop<'a, Ctx>, +{ + fn cextension_error(&self, tail: &[u8]) -> Self::ParseError { + StackParseError::Element(self.element_factory.extension_error(tail)) + } + + fn cideserialize>(&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 +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 +where + F::Mtbl: MentionableTop<'a, Ctx>, +{ + const SIZE: usize = Stack::<'a, Ctx, F::Mtbl>::SIZE + F::SIZE; +} + /// See [`StackVecResult`]. 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 -where - F::Mtbl: MentionableTop<'a, Ctx>, -{ - fn cextension_error(&self, tail: &[u8]) -> Self::ParseError { - StackParseError::Element(self.element_factory.extension_error(tail)) - } - - fn cideserialize>(&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 -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 -where - F::Mtbl: MentionableTop<'a, Ctx>, -{ - const SIZE: usize = Stack::<'a, Ctx, F::Mtbl>::SIZE + F::SIZE; -} - #[cfg(test)] mod tests { use std::rc::Rc;