CRegularAtomic
This commit is contained in:
parent
8e2012ff9c
commit
d64f992709
@ -16,7 +16,7 @@ use super::*;
|
|||||||
|
|
||||||
pub use self::modes::{
|
pub use self::modes::{
|
||||||
AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy,
|
AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy,
|
||||||
RegularAtomic,
|
CRegularAtomic, RegularAtomic,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub type AParseError<A> = <A as AtomicBase>::AParseError;
|
pub type AParseError<A> = <A as AtomicBase>::AParseError;
|
||||||
|
@ -46,19 +46,34 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait CRegularAtomic: AtomicBase + ImplMode<Mode = RegularMode> {
|
||||||
|
fn cra_deserialize(inlining: impl Inlining) -> AParseResult<Self>;
|
||||||
|
fn cra_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
||||||
|
}
|
||||||
|
|
||||||
pub trait RegularAtomic: AtomicBase + ParseMode<Mode = RegularMode> {
|
pub trait RegularAtomic: AtomicBase + ParseMode<Mode = RegularMode> {
|
||||||
fn ra_deserialize(inlining: impl Inlining) -> AParseResult<Self>;
|
fn ra_deserialize(inlining: impl Inlining) -> AParseResult<Self>;
|
||||||
fn ra_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
fn ra_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<A: RegularAtomic> AtomicModeProxy for WithMode<A, RegularMode> {
|
impl<A: AtomicModeParse + ParseMode<Mode = RegularMode>> RegularAtomic for A {
|
||||||
|
fn ra_deserialize(inlining: impl Inlining) -> AParseResult<Self> {
|
||||||
|
A::ma_deserialize(inlining)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ra_extend(self, tail: &[u8]) -> AParseResult<Self> {
|
||||||
|
A::ma_extend(self, tail)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<A: CRegularAtomic> AtomicModeProxy for WithMode<A, RegularMode> {
|
||||||
type A = A;
|
type A = A;
|
||||||
|
|
||||||
fn pma_deserialize<I: Inlining>(inlining: I) -> AModeResultM<Self::A, I> {
|
fn pma_deserialize<I: Inlining>(inlining: I) -> AModeResultM<Self::A, I> {
|
||||||
A::ra_deserialize(inlining)
|
A::cra_deserialize(inlining)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pma_extend(atomic: AExtensionSourceM<Self::A>, tail: &[u8]) -> AExtensionResultM<Self::A> {
|
fn pma_extend(atomic: AExtensionSourceM<Self::A>, tail: &[u8]) -> AExtensionResultM<Self::A> {
|
||||||
atomic.ra_extend(tail)
|
atomic.cra_extend(tail)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,12 +36,12 @@ impl ImplMode for Plain {
|
|||||||
type Mode = RegularMode;
|
type Mode = RegularMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RegularAtomic for Plain {
|
impl CRegularAtomic for Plain {
|
||||||
fn ra_deserialize(inlining: impl Inlining) -> AParseResult<Self> {
|
fn cra_deserialize(inlining: impl Inlining) -> AParseResult<Self> {
|
||||||
Ok(inlining.iread_all(Plain::from_slice))
|
Ok(inlining.iread_all(Plain::from_slice))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ra_extend(mut self, tail: &[u8]) -> AParseResult<Self> {
|
fn cra_extend(mut self, tail: &[u8]) -> AParseResult<Self> {
|
||||||
self.data.extend_from_slice(tail);
|
self.data.extend_from_slice(tail);
|
||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user