# vexil-runtime
Rust wire runtime for code generated by [Vexil](../../README.md). Generated
types use it for LSB-first bit I/O, scalar encodings, bounded recursion, and the
`Pack`/`Unpack` contracts.
## Main surfaces
| `BitWriter` / `BitReader` | Bit-accurate output and bounded input |
| `Pack` / `Unpack` | Generated encode and decode traits |
| `EncodeError` / `DecodeError` | Wire and resource-limit failures |
| `SchemaHandshake` | Encode and compare schema hashes and versions |
| `leb128` / `zigzag` | Defined integer transforms |
Borrowing reader methods can return byte and string slices backed by the input
buffer. They are local runtime APIs; generated ownership choices vary by target
and type.
## Wire model
Fields are packed in ordinal order. Sub-byte values fill each byte LSB-first,
multi-byte scalars are little-endian, and a message is padded only when the
contract requires byte alignment.
The runtime enforces maintained recursion, byte-length, and collection-count
limits. Applications must still provide bounded message framing and their own
transport security.
See the [Rust runtime guide](../../docs/book/src/runtime/rust.md) and
[wire-format specification](../../spec/wire-format.md).
Licensed under either [MIT](../../LICENSE-MIT) or
[Apache-2.0](../../LICENSE-APACHE), at your option.