#alignment #static #include-bytes #aligned

no-std align-data

Simply increase the alignment of any statics or include_bytes!

1 unstable release

0.1.0 Sep 6, 2020

#211 in No standard library

Download history 188/week @ 2023-12-06 119/week @ 2023-12-13 158/week @ 2023-12-20 146/week @ 2023-12-27 248/week @ 2024-01-03 241/week @ 2024-01-10 152/week @ 2024-01-17 115/week @ 2024-01-24 155/week @ 2024-01-31 418/week @ 2024-02-07 393/week @ 2024-02-14 897/week @ 2024-02-21 651/week @ 2024-02-28 522/week @ 2024-03-06 834/week @ 2024-03-13 318/week @ 2024-03-20

2,534 downloads per month
Used in 10 crates (6 directly)

MIT license

6KB

Align Data

MIT License crates.io docs.rs

Simply increase the alignment of any statics or include_bytes!.

Examples

When including raw data through include_bytes! it is often used to directly interpret as structured data however it does not align the included bytes according to the structured data's alignment.

This crate fixes this oversight:

use align_data::{include_aligned, Align4K};

static ALIGNED: &[u8] = include_aligned!(Align4K, "lib.rs");
assert_eq!(ALIGNED.as_ptr() as usize % 0x1000, 0);

The value of any constant expression can be forced to the given alignment:

use align_data::{aligned, Align16};

let five = aligned!(Align16, i32, 5);
assert_eq!(five as *const _ as usize % 0x10, 0);

License

Licensed under MIT License, see license.txt.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above, without any additional terms or conditions.

No runtime deps