From ef250932b62b5fb98ef5d7e3283091b4f4f6711a Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 29 Jul 2023 20:33:10 +0000 Subject: [PATCH] impl `AtomicModeParse` --- src/rstd/atomic/modes.rs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs index a9d4fa6..7a051da 100644 --- a/src/rstd/atomic/modes.rs +++ b/src/rstd/atomic/modes.rs @@ -39,11 +39,28 @@ pub trait AtomicModeParse: AtomicBase + ParseMode { pub trait AtomicModeProxy { type A: AtomicBase + ParseMode; - fn ma_deserialize(inlining: I) -> AParseResultM; + fn pma_deserialize(inlining: I) -> AParseResultM; - fn ma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM; + fn pma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM; - fn ma_prepare(atomic: Self::A) -> AExtensionSourceM; + fn pma_prepare(atomic: Self::A) -> AExtensionSourceM; +} + +impl AtomicModeParse for A +where + ::WithMode: AtomicModeProxy, +{ + fn ma_deserialize(inlining: I) -> AParseResultM { + <::WithMode as AtomicModeProxy>::pma_deserialize(inlining) + } + + fn ma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM { + <::WithMode as AtomicModeProxy>::pma_extend(atomic, tail) + } + + fn ma_prepare(self) -> AExtensionSourceM { + <::WithMode as AtomicModeProxy>::pma_prepare(self) + } } pub trait RegularAtomic: AtomicBase + ImplMode {