The aim of this crate is to improve user experience when working with static bytes.
Look at this pseudo code example to understand problem with &mut [u8]
and bytes::buf::BufMut
compile_fail
let mut fixed_storage = [u8; 16];
let mut slice = fixed_storage[..];
let len_before = slice.len();
// declaration fn encode(&self, buf: &mut dyn BufMut);
frame.encode(&mut slice);
let len = len_before - slice.len();
let filled_bytes = fixed_storage[..len];
There are two problems with code above:
- it will panic if encode want to use more than 16 bytes!
- it is boilerplate
You can resolve both with SafeBytesSlice
. For example usage see
docs.
Licensed under either of
at your option.
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.
This project try follow rules: * Keep a Changelog, * Semantic Versioning.
This README was generated with cargo-readme from template