Skip to main content

Encoding

Trait Encoding 

Source
pub trait Encoding: Sized {
    type Repr: AsRef<[u8]> + AsMut<[u8]> + Clone + Sized + for<'a> TryFrom<&'a [u8], Error: Error>;

    // Required methods
    fn from_be_bytes(bytes: Self::Repr) -> Self;
    fn from_le_bytes(bytes: Self::Repr) -> Self;
    fn to_be_bytes(&self) -> Self::Repr;
    fn to_le_bytes(&self) -> Self::Repr;

    // Provided methods
    fn from_bytes(bytes: Self::Repr, byte_order: ByteOrder) -> Self { ... }
    fn from_be_slice_truncated(bytes: &[u8], bits_precision: u32) -> Self { ... }
    fn from_le_slice_truncated(bytes: &[u8], bits_precision: u32) -> Self { ... }
    fn from_slice_truncated(
        bytes: &[u8],
        bits_precision: u32,
        byte_order: ByteOrder,
    ) -> Self { ... }
    fn to_bytes(&self, byte_order: ByteOrder) -> Self::Repr { ... }
}
Expand description

Encoding support.

Required Associated Types§

Source

type Repr: AsRef<[u8]> + AsMut<[u8]> + Clone + Sized + for<'a> TryFrom<&'a [u8], Error: Error>

Byte array representation.

Required Methods§

Source

fn from_be_bytes(bytes: Self::Repr) -> Self

Decode from big endian bytes.

Source

fn from_le_bytes(bytes: Self::Repr) -> Self

Decode from little endian bytes.

Source

fn to_be_bytes(&self) -> Self::Repr

Encode to big endian bytes.

Source

fn to_le_bytes(&self) -> Self::Repr

Encode to little endian bytes.

Provided Methods§

Source

fn from_bytes(bytes: Self::Repr, byte_order: ByteOrder) -> Self

Decode from bytes using the specified ByteOrder.

Source

fn from_be_slice_truncated(bytes: &[u8], bits_precision: u32) -> Self

Decode from the provided big endian bytes, truncating to the least significant bits in the event the given amount of data exceeds bits_precision.

Implementations may panic if bits_precision exceeds their underlying size.

Source

fn from_le_slice_truncated(bytes: &[u8], bits_precision: u32) -> Self

Decode from the provided little endian bytes, truncating to the least significant bits in the event the given amount of data exceeds bits_precision.

Implementations may panic if bits_precision exceeds their underlying size.

Source

fn from_slice_truncated( bytes: &[u8], bits_precision: u32, byte_order: ByteOrder, ) -> Self

Decode from the provided bytes, interpreting them using the specified ByteOrder, truncating to the least significant bits in the event the given amount of data exceeds bits_precision.

Implementations may panic if bits_precision exceeds their underlying size.

Source

fn to_bytes(&self, byte_order: ByteOrder) -> Self::Repr

Encode to bytes using the specified ByteOrder.

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.

Implementors§

Source§

impl Encoding for BoxedUint

Source§

type Repr = Box<[u8]>

Source§

impl Encoding for Limb

Source§

type Repr = [u8; 8]

Source§

impl<const LIMBS: usize> Encoding for Int<LIMBS>

Source§

impl<const LIMBS: usize> Encoding for Uint<LIMBS>