# vexil-runtime
Runtime support library for code generated by the [Vexil](https://github.com/vexil-lang/vexil)
schema compiler.
This crate is a dependency of generated Rust code, not of hand-written application code.
You typically add it when using [`vexil-codegen-rust`](https://crates.io/crates/vexil-codegen-rust).
## What's included
- **`BitWriter` / `BitReader`** — LSB-first bit-level I/O for sub-byte integer types (`u1`..`u7`)
- **`Pack` / `Unpack` traits** — implemented by generated structs and enums
- **LEB128** — unsigned and signed variable-length integer encoding
- **ZigZag** — signed integer encoding (`i32`/`i64` → unsigned zigzag)
- **`WireError`** — structured error type for decode failures
## Wire format
Vexil uses LSB-first bit packing. A `u3` field occupies exactly 3 bits on the wire.
Fields are packed left-to-right within a byte, with no padding between fields unless
the total bit count is not byte-aligned.
## License
Licensed under either of [MIT](../../LICENSE-MIT) or [Apache-2.0](../../LICENSE-APACHE) at your option.