diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs index ef2d8a8..b6d02f4 100644 --- a/src/rstd/atomic.rs +++ b/src/rstd/atomic.rs @@ -21,7 +21,7 @@ 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) -> AParseResult; + fn a_deserialize(deserializer: impl Inlining) -> AParseResult; /// Static equivalent of [`Factory::extend`]. fn a_extend(self, tail: &[u8]) -> AParseResult; } diff --git a/src/rstd/atomic/au64.rs b/src/rstd/atomic/au64.rs index f8e602c..ee386da 100644 --- a/src/rstd/atomic/au64.rs +++ b/src/rstd/atomic/au64.rs @@ -37,8 +37,9 @@ impl From<&[u8]> for IntParseError { impl Atomic for u64 { type AParseError = IntParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { - Ok(u64::from_le_bytes(deserializer.read_n_const::<8>()?)) + fn a_deserialize(deserializer: impl Inlining) -> AParseResult { + let (n, _) = deserializer.iread_n_const::<8>(|slice| IntParseError::from(slice))?; + Ok(u64::from_le_bytes(n)) } fn a_extend(self, tail: &[u8]) -> AParseResult { diff --git a/src/rstd/atomic/boolean.rs b/src/rstd/atomic/boolean.rs index dba67df..c561ed1 100644 --- a/src/rstd/atomic/boolean.rs +++ b/src/rstd/atomic/boolean.rs @@ -44,8 +44,8 @@ impl From<&[u8]> for BooleanParseError { impl Atomic for bool { type AParseError = BooleanParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { - let byte = deserializer.read_n_const::<1>()?; + fn a_deserialize(deserializer: impl Inlining) -> AParseResult { + let (byte, _) = deserializer.iread_n_const::<1>(|slice| BooleanParseError::from(slice))?; match byte[0] { 0 => Ok(false), 1 => Ok(true), diff --git a/src/rstd/atomic/plain.rs b/src/rstd/atomic/plain.rs index 6054522..2059054 100644 --- a/src/rstd/atomic/plain.rs +++ b/src/rstd/atomic/plain.rs @@ -31,8 +31,8 @@ impl Serializable for Plain { impl Atomic for Plain { type AParseError = PlainParseError; - fn a_deserialize(deserializer: &mut dyn Deserializer) -> AParseResult { - Ok(Plain::from_slice(deserializer.read_all())) + fn a_deserialize(deserializer: impl Inlining) -> AParseResult { + Ok(deserializer.iread_all(Plain::from_slice)) } fn a_extend(mut self, tail: &[u8]) -> AParseResult {