vexil-codegen-rust
Rust code generation backend for the Vexil schema compiler.
Takes a CompiledSchema from vexil-lang and emits Rust structs, enums, and Pack/Unpack implementations. Generated code depends on vexil-runtime for bit-level I/O.
Single file
use compile;
use generate;
let result = compile;
let compiled = result.compiled.expect;
let code: String = generate?;
Multi-file project
use ;
use RustBackend;
let project = compile_project?;
let files: = RustBackend.generate_project?;
// one .rs file per schema + a mod.rs with re-exports
What gets generated
For each message: a struct with named fields, a Pack impl (encode), and an Unpack impl (decode). For enums: a Rust enum with TryFrom<u*>. For flags: a newtype over the backing integer with bitwise operations. For unions: a Rust enum with length-prefixed variants. For @delta messages: a stateful encoder/decoder pair that transmits field-level deltas.
License
Licensed under either of MIT or Apache-2.0 at your option.