Rust Runtime
The vexil-runtime crate provides the runtime support needed by Vexil-generated Rust code.
Installation
[dependencies]
vexil-runtime = "0.5"
Core types
BitWriter
Encodes data into a byte buffer with LSB-first bit packing.
#![allow(unused)] fn main() { use vexil_runtime::BitWriter; let mut w = BitWriter::new(); w.write_bits(0b1010, 4); // write 4 bits w.write_u8(255); // write a full byte w.write_varint(12345); // write LEB128-encoded integer let bytes = w.finish(); // flush and return the byte buffer }
BitReader
Decodes data from a byte buffer with LSB-first bit packing.
#![allow(unused)] fn main() { use vexil_runtime::BitReader; let mut r = BitReader::new(&bytes); let nibble = r.read_bits(4)?; // read 4 bits let byte = r.read_u8()?; // read a full byte let value = r.read_varint()?; // read LEB128-encoded integer }
Pack and Unpack traits
Generated message types implement Pack and Unpack:
#![allow(unused)] fn main() { use vexil_runtime::{BitWriter, BitReader, Pack, Unpack}; // Encode let mut w = BitWriter::new(); my_message.pack(&mut w)?; let bytes = w.finish(); // Decode let mut r = BitReader::new(&bytes); let decoded = MyMessage::unpack(&mut r)?; }
API documentation
Full API documentation is available on docs.rs/vexil-runtime.