Crate structbuf

source ·
Expand description

A capacity-limited structured data buffer.

This library provides StructBuf - a capacity-limited buffer for encoding and decoding structured data. The primary use case is for safely handling small, variable-length message packets sent over the network or other transports.

The encoder ensures that the message size never exceeds a pre-configured limit. The decoder ensures that malformed or malicious input does not cause the program to panic.

Little-endian encoding is assumed.

no_std support

structbuf is no_std by default.

Example

let mut b = StructBuf::new(4);
b.append().u8(1).u16(2_u16).u8(3);
// b.u8(4); Would panic

let mut p = b.unpack();
assert_eq!(p.u8(), 1);
assert_eq!(p.u16(), 2);
assert_eq!(p.u8(), 3);
assert!(p.is_ok());

assert_eq!(p.u32(), 0);
assert!(!p.is_ok());

Structs

Packer of POD values into a StructBuf.
A capacity-limited buffer for encoding and decoding structured data.
Unpacker of POD values from a byte slice.

Traits

Trait for getting a packer for a byte buffer.
Trait for getting an unpacker for a byte slice.