From 6cff44c65233f81ef59bbed23590332877eb8d4f Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 5 Aug 2023 13:25:50 +0000 Subject: [PATCH] `ma_deserialize_sp` --- src/rstd/inlining/static_pair.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/rstd/inlining/static_pair.rs b/src/rstd/inlining/static_pair.rs index f28f755..f5ce5ed 100644 --- a/src/rstd/inlining/static_pair.rs +++ b/src/rstd/inlining/static_pair.rs @@ -283,18 +283,30 @@ impl ParseMode for StaticPairObject { type Mode = ::Mode; } +impl StaticPairObject +where + SP::A: InliningAtomic, + SP::B: AtomicModeParse, +{ + pub fn ma_deserialize_sp(stream: I) -> ModeResultP { + let (a, stream) = + ::a_ideserialize(stream).map_err(|e| SP::from_error_a(e))?; + Self::bind( + ::ma_deserialize(stream).map_err(|e| SP::from_error_b(e))?, + |b| SP::from_parsed(a, b), + ) + } +} + impl AtomicModeParse for StaticPairObject where SP::A: InliningAtomic, SP::B: AtomicModeParse, { fn ma_deserialize(stream: I) -> AModeResultM { - let (a, stream) = - ::a_ideserialize(stream).map_err(|e| SP::from_error_a(e))?; - Self::bind( - ::ma_deserialize(stream).map_err(|e| SP::from_error_b(e))?, - |b| SP::from_parsed(a, b).map(|pair| StaticPairObject { pair }), - ) + Ok(Self::map(Self::ma_deserialize_sp(stream)?, |pair| { + StaticPairObject { pair } + })) } fn ma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM {