From e90aadf67cc6356acc520c9a511b63a11e2c9117 Mon Sep 17 00:00:00 2001 From: timofey Date: Sat, 29 Jul 2023 20:30:24 +0000 Subject: [PATCH] `AtomicModeProxy` --- src/rstd/atomic/modes.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs index 8b6a623..a9d4fa6 100644 --- a/src/rstd/atomic/modes.rs +++ b/src/rstd/atomic/modes.rs @@ -29,15 +29,21 @@ pub type AExtensionSourceM = <::Mode as Mode>::ExtensionSource>; pub trait AtomicModeParse: AtomicBase + ParseMode { - fn ma_deserialize(&self, inlining: I) -> AParseResultM; + fn ma_deserialize(inlining: I) -> AParseResultM; - fn ma_extend( - &self, - mentionable: AExtensionSourceM, - tail: &[u8], - ) -> AExtensionResultM; + fn ma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM; - fn ma_prepare(mentionable: Self) -> AExtensionSourceM; + fn ma_prepare(self) -> AExtensionSourceM; +} + +pub trait AtomicModeProxy { + type A: AtomicBase + ParseMode; + + fn ma_deserialize(inlining: I) -> AParseResultM; + + fn ma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM; + + fn ma_prepare(atomic: Self::A) -> AExtensionSourceM; } pub trait RegularAtomic: AtomicBase + ImplMode {