# safe-bytes This crate allows reading bytes representation of structs even in presence of padding bytes. [![crates](https://img.shields.io/crates/v/safe-bytes.svg?label=safe-bytes)](https://crates.io/crates/safe-bytes) [![docs](https://docs.rs/safe-bytes/badge.svg)](https://docs.rs/safe-bytes) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE-MIT) [![License](https://img.shields.io/badge/license-APACHE-blue.svg)](LICENSE-APACHE) 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. [`SafeBytes`]: https://docs.rs/safe-bytes/0.1.0/safe_bytes/trait.SafeBytes.html [`SafeBytes::safe_bytes`]: https://docs.rs/safe-bytes/0.1.0/safe_bytes/trait.SafeBytes.html#tymethod.safe_bytes ## License This repository is licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 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.