//! 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(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 {}