move AtomicExt
to atomic
This commit is contained in:
parent
565f884bf8
commit
09560ea690
@ -43,3 +43,26 @@ pub trait Atomic: AtomicBase + ParseMode {
|
||||
/// [`FactoryParse::extend`]: crate::rcore::FactoryParse::extend
|
||||
fn a_extend(self, tail: &[u8]) -> AParseResult<Self>;
|
||||
}
|
||||
|
||||
fn _parse_slice<A: Atomic>(slice: &[u8]) -> AParseResult<A> {
|
||||
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<Self> {
|
||||
_parse_slice(slice)
|
||||
}
|
||||
}
|
||||
|
||||
impl<A: Atomic> AtomicExt for A {}
|
||||
|
@ -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,
|
||||
|
@ -12,24 +12,3 @@ use std::marker::PhantomData;
|
||||
use crate::{atomic::*, mode::*};
|
||||
|
||||
use super::*;
|
||||
|
||||
fn _parse_slice<A: Atomic>(slice: &[u8]) -> AParseResult<A> {
|
||||
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<Self> {
|
||||
_parse_slice(slice)
|
||||
}
|
||||
}
|
||||
|
||||
impl<A: Atomic> AtomicExt for A {}
|
||||
|
Loading…
Reference in New Issue
Block a user