pub use super::*;
pub type AIParseResult<A, I> = Result<(A, I), AParseError<A>>;
pub trait CInliningAtomic: AtomicBase + ImplMode<Mode = InliningMode> {
fn ca_extension_error(tail: &[u8]) -> Self::AParseError;
fn ca_ideserialize<I: Stream>(stream: I) -> AIParseResult<Self, I>;
}
pub trait InliningAtomic: AtomicBase + ParseMode<Mode = InliningMode> {
fn a_extension_error(tail: &[u8]) -> Self::AParseError;
fn a_ideserialize<I: Stream>(strean: I) -> AIParseResult<Self, I>;
}
impl<A: AtomicModeParse + ParseMode<Mode = InliningMode>> InliningAtomic for A {
fn a_extension_error(tail: &[u8]) -> Self::AParseError {
A::ma_extend((), tail)
}
fn a_ideserialize<I: Stream>(stream: I) -> AIParseResult<Self, I> {
A::ma_deserialize(stream)
}
}
impl<A: CInliningAtomic> AtomicModeProxy for WithMode<A, InliningMode> {
type A = A;
fn pma_deserialize<I: Stream>(stream: I) -> AModeResultM<Self::A, I> {
A::ca_ideserialize(stream)
}
fn pma_extend(_atomic: AExtensionSourceM<Self::A>, tail: &[u8]) -> AExtensionResultM<Self::A> {
A::ca_extension_error(tail)
}
}