spinel_pack

Trait TryOwnedUnpack

Source
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§

Source

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§

Source

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Attempts to decode the data at the given iterator into an instance of Self, where Self must be an “owned” type.

Provided Methods§

Source

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().

Source

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.

Implementations on Foreign Types§

Source§

impl TryOwnedUnpack for bool

Source§

impl TryOwnedUnpack for i8

Source§

type Unpacked = i8

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for i16

Source§

type Unpacked = i16

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for i32

Source§

type Unpacked = i32

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for i64

Source§

type Unpacked = i64

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for u8

Source§

type Unpacked = u8

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for u16

Source§

type Unpacked = u16

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for u32

Source§

type Unpacked = u32

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for u64

Source§

type Unpacked = u64

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for ()

Source§

type Unpacked = ()

Source§

fn try_owned_unpack(iter: &mut Iter<'_, u8>) -> Result<Self::Unpacked>

Source§

impl TryOwnedUnpack for String

Source§

impl TryOwnedUnpack for Ipv6Addr

Source§

impl<T> TryOwnedUnpack for [T]
where T: TryOwnedUnpack,

Source§

impl<T> TryOwnedUnpack for Vec<T>
where T: TryOwnedUnpack,

Source§

impl<T> TryOwnedUnpack for HashSet<T>
where T: TryOwnedUnpack, T::Unpacked: Eq + Hash,

Implementors§