Expand description
Neopack is a small binary serialization library.
Everything is encoded using a (nestable!) tag-length-value (TLV) format. a one-byte tag says what follows, an optional four-byte length says how big it is, then the value data follows. All integers are little-endian.
(Some notes for writing neopack encoders/decoders for your types by hand.)
Encoding is explicit, you push values onto an Encoder,
then call Encoder::into_bytes. Decoding is zero-copy,
a Decoder borrows the input slice and hands back references.
Thankfully, for structs and enums, #[derive(Pack, Unpack)]
(via neopack-derive) generates neopack implementations automatically.
ⓘ
use neopack::Pack;
use neopack::Unpack;
#[derive(Pack, Unpack)]
struct Point { x: i32, y: i32 }
let bytes = Point { x: 1, y: 2 }.pack_to_vec().unwrap();
let point = Point::unpack_from_bytes(&bytes).unwrap();Structs§
- Decoder
- A zero-copy, bounds-checked cursor over a byte slice.
- Encoder
- A bounded, state-machine driven encoder.
- List
Iter - Iterator for items within a List.
- MapIter
- Iterator for Key-Value pairs (Variants) within a Map.
Enums§
- Error
- Neopack serialization and deserialization errors.
- Scope
- Internal state tracking for the
Encoderstack. - Tag
- Identifies the type of the encoded value.
Traits§
Type Aliases§
- Result
- Specialized
Resultfor Neopack operations.