atomic::inlining
This commit is contained in:
parent
060499a383
commit
e15d1980ba
@ -1,3 +1,4 @@
|
|||||||
|
mod inlining;
|
||||||
mod modes;
|
mod modes;
|
||||||
mod regular;
|
mod regular;
|
||||||
|
|
||||||
@ -5,6 +6,7 @@ use std::error::Error;
|
|||||||
|
|
||||||
use crate::mode::*;
|
use crate::mode::*;
|
||||||
|
|
||||||
|
pub use self::inlining::{AIParseResult, CInliningAtomic, InliningAtomic};
|
||||||
pub use self::modes::{
|
pub use self::modes::{
|
||||||
AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy,
|
AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy,
|
||||||
};
|
};
|
||||||
|
29
src/atomic/inlining.rs
Normal file
29
src/atomic/inlining.rs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
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>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Atomic analogue of [`InliningFactory`]/[`InliningObject`].
|
||||||
|
///
|
||||||
|
/// [`InliningFactory`]: crate::rstd::inlining::InliningFactory
|
||||||
|
/// [`InliningObject`]: crate::rstd::inlining::InliningObject
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
use crate::atomic::*;
|
||||||
pub mod context;
|
pub mod context;
|
||||||
|
|
||||||
use std::{error::Error, fmt::Display};
|
use std::{error::Error, fmt::Display};
|
||||||
|
@ -67,31 +67,6 @@ pub trait ConstSizeObject<'a, Ctx: Context<'a>>: FixedSizeObject<'a, Ctx> {
|
|||||||
const SIZE: usize;
|
const SIZE: usize;
|
||||||
}
|
}
|
||||||
|
|
||||||
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>;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Atomic analogue of [`InliningFactory`]/[`InliningObject`].
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Atomic analogue of [`ConstSizeFactory`]/[`ConstSizeObject`].
|
/// Atomic analogue of [`ConstSizeFactory`]/[`ConstSizeObject`].
|
||||||
///
|
///
|
||||||
/// Note: `FixedSizeAtomic` doesn't exist because it would
|
/// Note: `FixedSizeAtomic` doesn't exist because it would
|
||||||
|
Loading…
Reference in New Issue
Block a user