From 3306bf9cc00031250348697fb297341b4a11fc8f Mon Sep 17 00:00:00 2001 From: timofey Date: Sun, 30 Jul 2023 22:24:46 +0000 Subject: [PATCH] `AtomicExt` via `AtomicModeParse` --- src/atomic.rs | 10 +++++----- src/mode.rs | 4 ++-- src/rstd.rs | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/atomic.rs b/src/atomic.rs index ce2dea8..63218eb 100644 --- a/src/atomic.rs +++ b/src/atomic.rs @@ -44,7 +44,7 @@ pub trait AtomicBase: 'static + Send + Sync + Send + Clone + Serializable { /// [`Factory`]: crate::rcore::Factory /// [`MentionableTop::points_typed`]: crate::rcore::MentionableTop::points_typed /// [`MentionableTop::topology`]: crate::rcore::MentionableTop::topology -pub trait Atomic: AtomicModeParse + ParseMode { +pub trait Atomic: AtomicModeParse { /// Static equivalent of [`FactoryParse::deserialize`]. /// /// [`FactoryParse::deserialize`]: crate::rcore::FactoryParse::deserialize @@ -56,19 +56,19 @@ pub trait Atomic: AtomicModeParse + ParseMode { fn a_extend(self, tail: &[u8]) -> AParseResult; } -fn _parse_slice(slice: &[u8]) -> AParseResult { +fn _parse_slice(slice: &[u8]) -> AParseResult { 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(); if tail.is_empty() { Ok(atomic) } 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. -pub trait AtomicExt: Atomic { +pub trait AtomicExt: AtomicModeParse { /// Static equivalent of [`FactoryExt::parse_slice`]. /// /// [`FactoryExt::parse_slice`]: crate::rcore::FactoryExt::parse_slice diff --git a/src/mode.rs b/src/mode.rs index 5c9890b..bd4b071 100644 --- a/src/mode.rs +++ b/src/mode.rs @@ -1,10 +1,10 @@ //! [`Mode`]-based parsing. -//! +//! //! | [`Mode`] | [`Factory`] | [`Atomic`] | //! |------------------|---------------------|--------------------| //! | [`RegularMode`] | [`RegularFactory`] | [`RegularAtomic`] | //! | [`InliningMode`] | [`InliningFactory`] | [`InliningAtomic`] | -//! +//! //! [`Factory`]: crate::rcore::Factory //! [`Atomic`]: crate::atomic::Atomic //! [`RegularFactory`]: crate::rcore::RegularFactory diff --git a/src/rstd.rs b/src/rstd.rs index 995392f..1a4babc 100644 --- a/src/rstd.rs +++ b/src/rstd.rs @@ -1,5 +1,5 @@ //! Standard extensions to [`rcore`]. -//! +//! //! [`rcore`]: crate::rcore pub mod atomic;