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 {