Crate aligned_array

Source
Expand description

A newtype with alignment of at least A bytes

§Examples

use std::mem;

use aligned_array::{Aligned, A2, A4, A16};

// Array aligned to a 2 byte boundary
static X: Aligned<A2, [u8; 3]> = Aligned([0; 3]);

// Array aligned to a 4 byte boundary
static Y: Aligned<A4, [u8; 3]> = Aligned([0; 3]);

// Unaligned array
static Z: [u8; 3] = [0; 3];

// You can allocate the aligned arrays on the stack too
let w: Aligned<A16, _> = Aligned([0u8; 3]);

assert_eq!(mem::align_of_val(&X), 2);
assert_eq!(mem::align_of_val(&Y), 4);
assert_eq!(mem::align_of_val(&Z), 1);
assert_eq!(mem::align_of_val(&w), 16);

Structs§

  • 2-byte alignment
  • 4-byte alignment
  • 8-byte alignment
  • 16-byte alignment
  • 32-byte alignment
  • 64-byte alignment
  • A newtype with alignment of at least A bytes

Traits§

  • Trait for types which can be viewed as aligned chunks of bytes This should generally just be, larger chunks of dumb bytes or similar.
  • Trait for types which can be viewed as native-endian integer slices This should generally just be, aligned slices of dumb bytes or similar. (Indeed the only intended implementor is Aligned<A8, GenericArray<u8, N>>)

Functions§

  • Changes the alignment of value to be at least A bytes