pub trait TryUnpack<'a> {
type Unpacked: Send + Sized + Debug;
// Required method
fn try_unpack(iter: &mut Iter<'a, u8>) -> Result<Self::Unpacked>;
// Provided methods
fn try_array_unpack(iter: &mut Iter<'a, u8>) -> Result<Self::Unpacked> { ... }
fn try_unpack_from_slice(slice: &'a [u8]) -> Result<Self::Unpacked> { ... }
}
Expand description
Trait for unpacking a spinel-encoded buffer to a specific type.
Similar to TryOwnedUnpack
, except that it can also unpack into borrowed
types, like &[u8]
and &str
.
Required Associated Types§
Sourcetype Unpacked: Send + Sized + Debug
type Unpacked: Send + Sized + Debug
The type of the unpacked result. This can be the same as Self
,
but in some cases it can be different. This is because Self
is
a marker type, and may not even be Sized
. For example, if Self
is
SpinelUint
, then Unpacked
would be u32
(because SpinelUint
is just
a marker trait indicating a variably-sized unsigned integer).
Required Methods§
Provided Methods§
Sourcefn try_array_unpack(iter: &mut Iter<'a, u8>) -> Result<Self::Unpacked>
fn try_array_unpack(iter: &mut Iter<'a, u8>) -> Result<Self::Unpacked>
Attempts to decode an item from an array at the given iterator into
an instance of Self
.
Array encoding is occasionally different than single-value encoding, hence the need for a separate method.
Default behavior is the same as try_unpack()
.
Sourcefn try_unpack_from_slice(slice: &'a [u8]) -> Result<Self::Unpacked>
fn try_unpack_from_slice(slice: &'a [u8]) -> Result<Self::Unpacked>
Convenience method for unpacking directly from a borrowed slice.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.