Crate fastxdr

Source
Expand description

To generate Rust types from an XDR spec at build time, add fastxdr to your Cargo.toml:

[build-dependencies]
# For the code generation
fastxdr = "1.0"

[dependencies]
# Required dependencies of the generated code
thiserror = "1.0"
bytes = "0.5"

And add a build.rs at the crate root (not in src!):

fn main() {
    // Tell Cargo to regenerate the types if the XDR spec changes
    println!("cargo:rerun-if-changed=xdr_spec.x");

    // Read from xdr_spec.x, writing the generated code to out.rs
    std::fs::write(
        std::path::Path::new(std::env::var("OUT_DIR").unwrap().as_str()).join("out.rs"),
        fastxdr::Generator::default()
            .generate(include_str!("xdr_spec.x"))
            .unwrap(),
    )
    .unwrap();
}

And then include the generated file in your application:

// Where out.rs is the filename from above
include!(concat!(env!("OUT_DIR"), "/out.rs"));
use xdr::*;

To view the generated types, either export the generated types in your application and use cargo doc, or use the CLI to produce the generated code directly for reading.

Modules§

ast
impls

Structs§

Generator

Constants§

DEFAULT_DERIVE
DEFAULT_DERIVE defines the default “derive” line prepended to type declarations.

Type Aliases§

Result