pub trait TryOwnedUnpack: Send {
type Unpacked: Send + Sized + Debug;
// Required method
fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>;
// Provided methods
fn try_array_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked> { ... }
fn try_owned_unpack_from_slice(slice: &[u8]) -> Result<Self::Unpacked> { ... }
}
Expand description
Trait for unpacking only into owned types, like Vec<u8>
or String
.
Similar to TryUnpack
, except that this trait cannot unpack into borrowed
types like &[u8]
or &str
.
If you have a TryOwnedUnpack
implementation, you can automatically implement
TryUnpack
using the impl_try_unpack_for_owned!
macro.
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_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>
fn try_array_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>
Attempts to decode an item from an array at the given iterator into
an instance of Self
, where Self
must be an “owned” type.
Array encoding is occasionally different than single-value encoding, hence the need for a separate method.
Default behavior is the same as try_owned_unpack()
.
Sourcefn try_owned_unpack_from_slice(slice: &[u8]) -> Result<Self::Unpacked>
fn try_owned_unpack_from_slice(slice: &[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.