Module data_model::endian

source ·
Expand description

Explicit endian types useful for embedding in structs or reinterpreting data.

Each endian type is guarnteed to have the same size and alignment as a regular unsigned primiive of the equal size.

Examples

  let b: Be32 = From::from(3);
  let l: Le32 = From::from(3);

  assert_eq!(b.to_native(), 3);
  assert_eq!(l.to_native(), 3);
  assert!(b == 3);
  assert!(l == 3);

  // SAFETY: trivially safe
  let b_trans: u32 = unsafe { std::mem::transmute(b) };
  // SAFETY: trivially safe
  let l_trans: u32 = unsafe { std::mem::transmute(l) };

  #[cfg(target_endian = "little")]
  assert_eq!(l_trans, 3);
  #[cfg(target_endian = "big")]
  assert_eq!(b_trans, 3);

  assert_ne!(b_trans, l_trans);

Macros

Structs

  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.
  • An integer type of with an explicit endianness.