radn-rs/src/rstd/atomic.rs
2023-07-30 19:42:43 +00:00

36 lines
937 B
Rust

//! This module allows to describe a primitive subset of [Mentionable] types, [Atomic]s,
//! simple static types, which are completely [Context]-independent.
pub mod array;
pub mod atomic_object;
pub mod au64;
pub mod boolean;
pub mod plain;
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 {}