diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs index e06d58e..57915c2 100644 --- a/src/rstd/atomic.rs +++ b/src/rstd/atomic.rs @@ -14,7 +14,10 @@ use crate::rcore::*; use super::*; -pub use self::modes::{AtomicProxy, RegularAtomic}; +pub use self::modes::{ + AExtensionResultM, AExtensionSourceM, AParseResultM, AtomicModeParse, AtomicProxy, + RegularAtomic, +}; pub type AParseError = ::AParseError; diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs index 54cfac0..8b6a623 100644 --- a/src/rstd/atomic/modes.rs +++ b/src/rstd/atomic/modes.rs @@ -20,6 +20,26 @@ where } } +pub type AParseResultM = <::Mode as Mode>::ParseResult, I>; + +pub type AExtensionResultM = + <::Mode as Mode>::ExtensionResult>; + +pub type AExtensionSourceM = + <::Mode as Mode>::ExtensionSource>; + +pub trait AtomicModeParse: AtomicBase + ParseMode { + fn ma_deserialize(&self, inlining: I) -> AParseResultM; + + fn ma_extend( + &self, + mentionable: AExtensionSourceM, + tail: &[u8], + ) -> AExtensionResultM; + + fn ma_prepare(mentionable: Self) -> AExtensionSourceM; +} + pub trait RegularAtomic: AtomicBase + ImplMode { fn ra_deserialize(inlining: impl Inlining) -> AParseResult; fn ra_extend(self, tail: &[u8]) -> AParseResult;