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§

A2
2-byte alignment
A4
4-byte alignment
A8
8-byte alignment
A16
16-byte alignment
A32
32-byte alignment
A64
64-byte alignment
Aligned
A newtype with alignment of at least A bytes

Traits§

AsAlignedChunks
Trait for types which can be viewed as aligned chunks of bytes This should generally just be, larger chunks of dumb bytes or similar.
AsNeSlice
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§

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