AtomicExt
via AtomicModeParse
This commit is contained in:
parent
b8f89580aa
commit
3306bf9cc0
@ -44,7 +44,7 @@ pub trait AtomicBase: 'static + Send + Sync + Send + Clone + Serializable {
|
|||||||
/// [`Factory`]: crate::rcore::Factory
|
/// [`Factory`]: crate::rcore::Factory
|
||||||
/// [`MentionableTop::points_typed`]: crate::rcore::MentionableTop::points_typed
|
/// [`MentionableTop::points_typed`]: crate::rcore::MentionableTop::points_typed
|
||||||
/// [`MentionableTop::topology`]: crate::rcore::MentionableTop::topology
|
/// [`MentionableTop::topology`]: crate::rcore::MentionableTop::topology
|
||||||
pub trait Atomic: AtomicModeParse + ParseMode {
|
pub trait Atomic: AtomicModeParse {
|
||||||
/// Static equivalent of [`FactoryParse::deserialize`].
|
/// Static equivalent of [`FactoryParse::deserialize`].
|
||||||
///
|
///
|
||||||
/// [`FactoryParse::deserialize`]: crate::rcore::FactoryParse::deserialize
|
/// [`FactoryParse::deserialize`]: crate::rcore::FactoryParse::deserialize
|
||||||
@ -56,19 +56,19 @@ pub trait Atomic: AtomicModeParse + ParseMode {
|
|||||||
fn a_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
fn a_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn _parse_slice<A: Atomic>(slice: &[u8]) -> AParseResult<A> {
|
fn _parse_slice<A: AtomicModeParse>(slice: &[u8]) -> AParseResult<A> {
|
||||||
let mut deserializer = SliceDeserializer::from(slice);
|
let mut deserializer = SliceDeserializer::from(slice);
|
||||||
let atomic = A::a_deserialize(&mut deserializer)?;
|
let atomic = A::seal(A::ma_deserialize(&mut deserializer)?);
|
||||||
let tail = deserializer.read_all();
|
let tail = deserializer.read_all();
|
||||||
if tail.is_empty() {
|
if tail.is_empty() {
|
||||||
Ok(atomic)
|
Ok(atomic)
|
||||||
} else {
|
} else {
|
||||||
A::a_extend(atomic, tail)
|
A::xseal(A::ma_extend(A::prepare(atomic), tail))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extension trait to provide method-like utilities associated with [Atomic]s.
|
/// Extension trait to provide method-like utilities associated with [Atomic]s.
|
||||||
pub trait AtomicExt: Atomic {
|
pub trait AtomicExt: AtomicModeParse {
|
||||||
/// Static equivalent of [`FactoryExt::parse_slice`].
|
/// Static equivalent of [`FactoryExt::parse_slice`].
|
||||||
///
|
///
|
||||||
/// [`FactoryExt::parse_slice`]: crate::rcore::FactoryExt::parse_slice
|
/// [`FactoryExt::parse_slice`]: crate::rcore::FactoryExt::parse_slice
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
//! [`Mode`]-based parsing.
|
//! [`Mode`]-based parsing.
|
||||||
//!
|
//!
|
||||||
//! | [`Mode`] | [`Factory`] | [`Atomic`] |
|
//! | [`Mode`] | [`Factory`] | [`Atomic`] |
|
||||||
//! |------------------|---------------------|--------------------|
|
//! |------------------|---------------------|--------------------|
|
||||||
//! | [`RegularMode`] | [`RegularFactory`] | [`RegularAtomic`] |
|
//! | [`RegularMode`] | [`RegularFactory`] | [`RegularAtomic`] |
|
||||||
//! | [`InliningMode`] | [`InliningFactory`] | [`InliningAtomic`] |
|
//! | [`InliningMode`] | [`InliningFactory`] | [`InliningAtomic`] |
|
||||||
//!
|
//!
|
||||||
//! [`Factory`]: crate::rcore::Factory
|
//! [`Factory`]: crate::rcore::Factory
|
||||||
//! [`Atomic`]: crate::atomic::Atomic
|
//! [`Atomic`]: crate::atomic::Atomic
|
||||||
//! [`RegularFactory`]: crate::rcore::RegularFactory
|
//! [`RegularFactory`]: crate::rcore::RegularFactory
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
//! Standard extensions to [`rcore`].
|
//! Standard extensions to [`rcore`].
|
||||||
//!
|
//!
|
||||||
//! [`rcore`]: crate::rcore
|
//! [`rcore`]: crate::rcore
|
||||||
|
|
||||||
pub mod atomic;
|
pub mod atomic;
|
||||||
|
Loading…
Reference in New Issue
Block a user