10 releases
0.2.8 | Aug 24, 2023 |
---|---|
0.2.7 | Aug 11, 2023 |
0.1.1 | Aug 2, 2023 |
#1531 in Encoding
92 downloads per month
22KB
450 lines
Lightpack
A lighweight, no-std binary serialization library.
Example
Lightpack provides derivable traits for encoding (Pack
) and decoding (Unpack
), as well as for determining a type's encoded size (Size
):
#[derive(Size, Pack, Unpack, Debug)]
struct Point {
x: i16,
y: i16,
}
To encode, call pack
with an endianness (e.g. lightpack::byteorder::BigEndian
) on a &mut [u8]
slice:
let mut buffer = [0u8; Point::SIZE];
Point { x: 3, y: 4 }.pack::<BigEndian>(&mut buffer);
// => buffer == [0, 3, 0, 4]
To decode, call unpack
on a &[u8]
slice:
Point::unpack::<BigEndian>(&[0, 3, 0, 4]).unwrap()
// => Point { x: 3, y: 4 }
For a complete example, check out examples/point.rs
.
Dependencies
~290–760KB
~17K SLoC