diff --git a/src/atomic.rs b/src/atomic.rs index 4850025..be4a2d2 100644 --- a/src/atomic.rs +++ b/src/atomic.rs @@ -43,3 +43,26 @@ pub trait Atomic: AtomicBase + ParseMode { /// [`FactoryParse::extend`]: crate::rcore::FactoryParse::extend fn a_extend(self, tail: &[u8]) -> AParseResult; } + +fn _parse_slice(slice: &[u8]) -> AParseResult { + let mut deserializer = SliceDeserializer::from(slice); + let atomic = A::a_deserialize(&mut deserializer)?; + let tail = deserializer.read_all(); + if tail.is_empty() { + Ok(atomic) + } else { + A::a_extend(atomic, tail) + } +} + +/// Extension trait to provide method-like utilities associated with [Atomic]s. +pub trait AtomicExt: Atomic { + /// Static equivalent of [`FactoryExt::parse_slice`]. + /// + /// [`FactoryExt::parse_slice`]: crate::rcore::FactoryExt::parse_slice + fn parse_slice(slice: &[u8]) -> AParseResult { + _parse_slice(slice) + } +} + +impl AtomicExt for A {} diff --git a/src/mode/slice_deserializer.rs b/src/mode/slice_deserializer.rs index 72f9fae..6cd80e4 100644 --- a/src/mode/slice_deserializer.rs +++ b/src/mode/slice_deserializer.rs @@ -5,7 +5,7 @@ use super::*; /// [Deserializer] for slices. Used in [`FactoryExt::parse_slice`] and [`AtomicExt::parse_slice`]. /// /// [`FactoryExt::parse_slice`]: crate::rcore::FactoryExt::parse_slice -/// [`AtomicExt::parse_slice`]: crate::rstd::atomic::AtomicExt::parse_slice +/// [`AtomicExt::parse_slice`]: crate::atomic::AtomicExt::parse_slice pub struct SliceDeserializer<'a> { slice: &'a [u8], pos: usize, diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs index fe41364..2ef5f08 100644 --- a/src/rstd/atomic.rs +++ b/src/rstd/atomic.rs @@ -12,24 +12,3 @@ use std::marker::PhantomData; use crate::{atomic::*, mode::*}; use super::*; - -fn _parse_slice(slice: &[u8]) -> AParseResult { - let mut deserializer = SliceDeserializer::from(slice); - let atomic = A::a_deserialize(&mut deserializer)?; - let tail = deserializer.read_all(); - if tail.is_empty() { - Ok(atomic) - } else { - A::a_extend(atomic, tail) - } -} - -/// Extension trait to provide method-like utilities associated with [Atomic]s. -pub trait AtomicExt: Atomic { - /// Static equivalent of [`FactoryExt::parse_slice`]. - fn parse_slice(slice: &[u8]) -> AParseResult { - _parse_slice(slice) - } -} - -impl AtomicExt for A {}