| Crates.io | lightpack |
| lib.rs | lightpack |
| version | 0.2.8 |
| created_at | 2023-08-02 20:55:28.21059+00 |
| updated_at | 2023-08-24 16:39:49.708769+00 |
| description | A lightweight, no-std binary serialization library |
| homepage | https://github.com/ProjectLighthouseCAU/lightpack |
| repository | https://github.com/ProjectLighthouseCAU/lightpack |
| max_upload_size | |
| id | 933095 |
| size | 42,126 |
A lighweight, no-std binary serialization library.
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.