Crate aligned_array[][src]

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