diff --git a/src/atomic.rs b/src/atomic.rs index 2817a32..62f7f3f 100644 --- a/src/atomic.rs +++ b/src/atomic.rs @@ -1,3 +1,4 @@ +mod inlining; mod modes; mod regular; @@ -5,6 +6,7 @@ use std::error::Error; use crate::mode::*; +pub use self::inlining::{AIParseResult, CInliningAtomic, InliningAtomic}; pub use self::modes::{ AExtensionResultM, AExtensionSourceM, AModeResultM, AtomicModeParse, AtomicModeProxy, }; diff --git a/src/atomic/inlining.rs b/src/atomic/inlining.rs new file mode 100644 index 0000000..dad4fc0 --- /dev/null +++ b/src/atomic/inlining.rs @@ -0,0 +1,29 @@ +pub use super::*; + +pub type AIParseResult = Result<(A, I), AParseError>; + +pub trait CInliningAtomic: AtomicBase + ImplMode { + fn ca_extension_error(tail: &[u8]) -> Self::AParseError; + + fn ca_ideserialize(stream: I) -> AIParseResult; +} + +/// Atomic analogue of [`InliningFactory`]/[`InliningObject`]. +/// +/// [`InliningFactory`]: crate::rstd::inlining::InliningFactory +/// [`InliningObject`]: crate::rstd::inlining::InliningObject +pub trait InliningAtomic: AtomicBase + ParseMode { + fn a_extension_error(tail: &[u8]) -> Self::AParseError; + + fn a_ideserialize(strean: I) -> AIParseResult; +} + +impl> InliningAtomic for A { + fn a_extension_error(tail: &[u8]) -> Self::AParseError { + A::ma_extend((), tail) + } + + fn a_ideserialize(stream: I) -> AIParseResult { + A::ma_deserialize(stream) + } +} diff --git a/src/rstd/collections/tree.rs b/src/rstd/collections/tree.rs index 23a5a1b..dfb13f8 100644 --- a/src/rstd/collections/tree.rs +++ b/src/rstd/collections/tree.rs @@ -1,3 +1,4 @@ +use crate::atomic::*; pub mod context; use std::{error::Error, fmt::Display}; diff --git a/src/rstd/inlining.rs b/src/rstd/inlining.rs index 25ad96e..1d56d9d 100644 --- a/src/rstd/inlining.rs +++ b/src/rstd/inlining.rs @@ -67,31 +67,6 @@ pub trait ConstSizeObject<'a, Ctx: Context<'a>>: FixedSizeObject<'a, Ctx> { const SIZE: usize; } -pub type AIParseResult = Result<(A, I), AParseError>; - -pub trait CInliningAtomic: AtomicBase + ImplMode { - fn ca_extension_error(tail: &[u8]) -> Self::AParseError; - - fn ca_ideserialize(stream: I) -> AIParseResult; -} - -/// Atomic analogue of [`InliningFactory`]/[`InliningObject`]. -pub trait InliningAtomic: AtomicBase + ParseMode { - fn a_extension_error(tail: &[u8]) -> Self::AParseError; - - fn a_ideserialize(strean: I) -> AIParseResult; -} - -impl> InliningAtomic for A { - fn a_extension_error(tail: &[u8]) -> Self::AParseError { - A::ma_extend((), tail) - } - - fn a_ideserialize(stream: I) -> AIParseResult { - A::ma_deserialize(stream) - } -} - /// Atomic analogue of [`ConstSizeFactory`]/[`ConstSizeObject`]. /// /// Note: `FixedSizeAtomic` doesn't exist because it would