Utilities for safe zero-copy parsing and serialization.
This crate provides utilities which make it easy to perform zero-copy
parsing and serialization by allowing zero-copy conversion to/from byte
slices.
This is enabled by three core marker traits, each of which can be derived
(e.g., `#[derive(FromBytes)]`):
- [`FromBytes`] indicates that a type may safely be converted from an
arbitrary byte sequence
- [`AsBytes`] indicates that a type may safely be converted *to* a byte
sequence
- [`Unaligned`] indicates that a type's alignment requirement is 1
Types which implement a subset of these traits can then be converted to/from
byte sequences with little to no runtime overhead.
Note that these traits are ignorant of byte order. For byte order-aware
types, see the [`byteorder`] module.