libvirt-codegen 0.1.1

Code generator for libvirt protocol (.x files)
Documentation

libvirt-codegen

Code generator for libvirt protocol from XDR (.x) definition files.

This crate parses libvirt's .x protocol definition files and generates Rust types and RPC client methods.

Features

  • XDR file parser using nom
  • Rust code generator using quote
  • Generates structs, enums, unions, typedefs
  • Generates async RPC client methods for all 453+ libvirt procedures

Usage

This crate is typically used as a build dependency:

// build.rs
use std::{env, fs, path::Path};

fn main() {
    let out_dir = env::var("OUT_DIR").unwrap();

    let protocol = libvirt_codegen::parse_file("proto/remote_protocol.x")
        .expect("failed to parse protocol");

    let code = libvirt_codegen::generate(&protocol);

    let dest = Path::new(&out_dir).join("generated.rs");
    fs::write(&dest, code).unwrap();

    println!("cargo:rerun-if-changed=proto/remote_protocol.x");
}

License

MIT OR Apache-2.0