diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs
index ca55069..cd4a181 100644
--- a/src/rstd/atomic.rs
+++ b/src/rstd/atomic.rs
@@ -16,7 +16,7 @@ use super::*;
pub use self::modes::{
AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy,
- RegularAtomic,
+ CRegularAtomic, RegularAtomic,
};
pub type AParseError = ::AParseError;
diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs
index 31e1f1e..9e0dd73 100644
--- a/src/rstd/atomic/modes.rs
+++ b/src/rstd/atomic/modes.rs
@@ -46,19 +46,34 @@ where
}
}
+pub trait CRegularAtomic: AtomicBase + ImplMode {
+ fn cra_deserialize(inlining: impl Inlining) -> AParseResult;
+ fn cra_extend(self, tail: &[u8]) -> AParseResult;
+}
+
pub trait RegularAtomic: AtomicBase + ParseMode {
fn ra_deserialize(inlining: impl Inlining) -> AParseResult;
fn ra_extend(self, tail: &[u8]) -> AParseResult;
}
-impl AtomicModeProxy for WithMode {
+impl> RegularAtomic for A {
+ fn ra_deserialize(inlining: impl Inlining) -> AParseResult {
+ A::ma_deserialize(inlining)
+ }
+
+ fn ra_extend(self, tail: &[u8]) -> AParseResult {
+ A::ma_extend(self, tail)
+ }
+}
+
+impl AtomicModeProxy for WithMode {
type A = A;
fn pma_deserialize(inlining: I) -> AModeResultM {
- A::ra_deserialize(inlining)
+ A::cra_deserialize(inlining)
}
fn pma_extend(atomic: AExtensionSourceM, tail: &[u8]) -> AExtensionResultM {
- atomic.ra_extend(tail)
+ atomic.cra_extend(tail)
}
}
diff --git a/src/rstd/atomic/plain.rs b/src/rstd/atomic/plain.rs
index e4a58c6..3bdfe16 100644
--- a/src/rstd/atomic/plain.rs
+++ b/src/rstd/atomic/plain.rs
@@ -36,12 +36,12 @@ impl ImplMode for Plain {
type Mode = RegularMode;
}
-impl RegularAtomic for Plain {
- fn ra_deserialize(inlining: impl Inlining) -> AParseResult {
+impl CRegularAtomic for Plain {
+ fn cra_deserialize(inlining: impl Inlining) -> AParseResult {
Ok(inlining.iread_all(Plain::from_slice))
}
- fn ra_extend(mut self, tail: &[u8]) -> AParseResult {
+ fn cra_extend(mut self, tail: &[u8]) -> AParseResult {
self.data.extend_from_slice(tail);
Ok(self)
}