[][src]Trait byte_struct::ByteStructUnspecifiedByteOrder

pub trait ByteStructUnspecifiedByteOrder: ByteStructLen {
    fn write_bytes_default_le(&self, bytes: &mut [u8]);
fn read_bytes_default_le(bytes: &[u8]) -> Self;
fn write_bytes_default_be(&self, bytes: &mut [u8]);
fn read_bytes_default_be(bytes: &[u8]) -> Self; }

A type that can be packed into or unpacked from raw bytes under given default byte order.

This trait is implemented for most numeric primitive types, except for bool, char, isize and usize.

This is also implemented for array types whose element type implements ByteStructUnspecifiedByteOrder and whose size is between 1 and 32 (inclusive).

This trait is automatically implemented for all types that implements ByteStruct. In this case, all members of ByteStructUnspecifiedByteOrder are direct wrappers of ByteStruct members.

Members in this trait are meant to be called by byte_struct internal only. They do not do what one might expect: the byte orders specified in read_bytes_default_* / write_bytes_default_* functions are only default byte orders. The default byte order is only respected when the type itself does not carry byte order specification (e.g. primitive types). In contrast, since ByteStruct types always have fixed packing method, the default byte order has no effect on them, and the three versions of read / write functions for them, _default_le, _default_be and no-spec from ByteStruct, behave exactly the same.

One can implement this trait for custom types in order to pack or unpack an object in a special way, but only when the said type changes its packing method depending on the default byte order. An example for this is a custom fixed-size large integer type. If the packing method is independent from the default byte order, please implement ByteStruct instead.

Required methods

fn write_bytes_default_le(&self, bytes: &mut [u8])

Packs the object into raw bytes with little-endian as the default byte order

fn read_bytes_default_le(bytes: &[u8]) -> Self

Unpacks raw bytes into a new object with little-endian as the default byte order

fn write_bytes_default_be(&self, bytes: &mut [u8])

Packs the object into raw bytes with big-endian as the default byte order

fn read_bytes_default_be(bytes: &[u8]) -> Self

Unpacks raw bytes into a new object with big-endian as the default byte order

Loading content...

Implementations on Foreign Types

impl ByteStructUnspecifiedByteOrder for u8[src]

impl ByteStructUnspecifiedByteOrder for i8[src]

impl ByteStructUnspecifiedByteOrder for u16[src]

impl ByteStructUnspecifiedByteOrder for i16[src]

impl ByteStructUnspecifiedByteOrder for u32[src]

impl ByteStructUnspecifiedByteOrder for i32[src]

impl ByteStructUnspecifiedByteOrder for u64[src]

impl ByteStructUnspecifiedByteOrder for i64[src]

impl ByteStructUnspecifiedByteOrder for u128[src]

impl ByteStructUnspecifiedByteOrder for i128[src]

impl ByteStructUnspecifiedByteOrder for f32[src]

impl ByteStructUnspecifiedByteOrder for f64[src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 1][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 2][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 3][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 4][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 5][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 6][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 7][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 8][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 9][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 10][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 11][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 12][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 13][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 14][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 15][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 16][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 17][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 18][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 19][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 20][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 21][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 22][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 23][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 24][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 25][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 26][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 27][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 28][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 29][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 30][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 31][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 32][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 100][src]

impl<T: ByteStructUnspecifiedByteOrder> ByteStructUnspecifiedByteOrder for [T; 3000][src]

Loading content...

Implementors

impl<T: ByteStruct> ByteStructUnspecifiedByteOrder for T[src]

Loading content...