diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs index 433eb03..ef2d8a8 100644 --- a/src/rstd/atomic.rs +++ b/src/rstd/atomic.rs @@ -12,6 +12,8 @@ use crate::rcore::*; use super::*; +pub type AParseResult = Result::AParseError>; + /// This trait combines functionality of [`Mentionable`] and [`Factory`], /// while limiting [`Mentionable::points_typed`] (and corresponding [`Mentionable::topology`]) /// to an empty sequence. @@ -19,12 +21,12 @@ pub trait Atomic: 'static + Send + Sync + Send + Clone + Serializable { /// Equivalent of [`Factory::ParseError`]. type AParseError: Error; /// Static equivalent of [`Factory::deserialize`]. - fn a_deserialize(deserializer: &mut dyn Deserializer) -> Result; + fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult; /// Static equivalent of [`Factory::extend`]. - fn a_extend(self, tail: &[u8]) -> Result; + fn a_extend(self, tail: &[u8]) -> AParseResult; } -fn _parse_slice(slice: &[u8]) -> Result { +fn _parse_slice(slice: &[u8]) -> AParseResult { let mut deserializer = SliceDeserializer::from(slice); let atomic = A::a_deserialize(&mut deserializer)?; let tail = deserializer.read_all(); @@ -38,13 +40,11 @@ fn _parse_slice(slice: &[u8]) -> Result { /// 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]) -> Result { + fn parse_slice(slice: &[u8]) -> AParseResult { _parse_slice(slice) } - fn o_deserialise<'a, Ctx: Context<'a>>( - dectx: &mut dyn DeCtx<'a, Ctx>, - ) -> Result { + fn o_deserialise<'a, Ctx: Context<'a>>(dectx: &mut dyn DeCtx<'a, Ctx>) -> AParseResult { Self::a_deserialize(dectx.deserializer()) } } diff --git a/src/rstd/atomic/au64.rs b/src/rstd/atomic/au64.rs index c651453..bd4555a 100644 --- a/src/rstd/atomic/au64.rs +++ b/src/rstd/atomic/au64.rs @@ -37,11 +37,11 @@ impl From<&[u8]> for IntParseError { impl Atomic for u64 { type AParseError = IntParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> Result { + fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { Ok(u64::from_le_bytes(deserializer.read_n_const::<8>()?)) } - fn a_extend(self, tail: &[u8]) -> Result { + fn a_extend(self, tail: &[u8]) -> AParseResult { Err(Self::a_extension_error(tail)) } } diff --git a/src/rstd/atomic/boolean.rs b/src/rstd/atomic/boolean.rs index 539beec..2422201 100644 --- a/src/rstd/atomic/boolean.rs +++ b/src/rstd/atomic/boolean.rs @@ -44,7 +44,7 @@ impl From<&[u8]> for BooleanParseError { impl Atomic for bool { type AParseError = BooleanParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> Result { + fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { let byte = deserializer.read_n_const::<1>()?; match byte[0] { 0 => Ok(false), @@ -53,7 +53,7 @@ impl Atomic for bool { } } - fn a_extend(self, tail: &[u8]) -> Result { + fn a_extend(self, tail: &[u8]) -> AParseResult { Err(Self::a_extension_error(tail)) } } diff --git a/src/rstd/atomic/plain.rs b/src/rstd/atomic/plain.rs index db71d16..6054522 100644 --- a/src/rstd/atomic/plain.rs +++ b/src/rstd/atomic/plain.rs @@ -31,11 +31,11 @@ impl Serializable for Plain { impl Atomic for Plain { type AParseError = PlainParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> Result { + fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { Ok(Plain::from_slice(deserializer.read_all())) } - fn a_extend(mut self, tail: &[u8]) -> Result { + fn a_extend(mut self, tail: &[u8]) -> AParseResult { self.data.extend_from_slice(tail); Ok(self) }