safe-bytes

This crate allows reading bytes representation of structs even in presence of padding bytes.

crates docs License License

Simply derive [SafeBytes] for structures where all field types are [SafeBytes] implementations. And [SafeBytes::safe_bytes] would initialize all padding bytes before returning &[u8]. All primitives implement [SafeBytes] as there is no padding bytes. Additionally some std types implement [SafeBytes].

Note that in order to initialize padding bytes [SafeBytes::safe_bytes] takes mutable reference &mut self. And returns shareable reference &[u8] because not all bitpatterns may be allowed for the type.

License

This repository is licensed under either of

at your option.

Contribution Licensing

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