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 {