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) }