130 releases
0.20.1 | Nov 15, 2024 |
---|---|
0.19.0 | Jan 14, 2024 |
0.18.0 | Sep 4, 2023 |
0.17.2 | Jun 26, 2023 |
0.0.5 | Nov 23, 2014 |
#20 in Development tools
168,020 downloads per month
Used in 80 crates
(36 directly)
1.5MB
30K
SLoC
Cap'n Proto code generation for Rust
The generated code depends on the capnproto-rust runtime library.
Code generation can be customized through the annotations defined in rust.capnp
.
lib.rs
:
Cap'n Proto Schema Compiler Plugin Library
This library allows you to do
Cap'n Proto code generation
within a Cargo build. You still need the capnp
binary (implemented in C++).
(If you use a package manager, try looking for a package called
capnproto
.)
In your Cargo.toml:
[dependencies]
capnp = "0.20" # Note this is a different library than capnp*c*
[build-dependencies]
capnpc = "0.20"
In your build.rs:
fn main() {
capnpc::CompilerCommand::new()
.src_prefix("schema")
.file("schema/foo.capnp")
.file("schema/bar.capnp")
.run().expect("schema compiler command");
}
In your lib.rs:
mod foo_capnp {
include!(concat!(env!("OUT_DIR"), "/foo_capnp.rs"));
}
mod bar_capnp {
include!(concat!(env!("OUT_DIR"), "/bar_capnp.rs"));
}
This will be equivalent to executing the shell command
capnp compile -orust:$OUT_DIR --src-prefix=schema schema/foo.capnp schema/bar.capnp