An implementation of the protobuf compiler in rust, intended for use as a library with crates such as prost-build
to avoid needing to build protoc
.
Compiling a single source file:
assert_eq!(protox::compile(&["root.proto"], &["."]).unwrap(), FileDescriptorSet {
file: vec![
FileDescriptorProto {
name: Some("root.proto".to_owned()),
/* ... */
}
],
});
Usage with prost-build
:
let file_descriptors = compile(&["root.proto"], &["."]).unwrap();
let file_descriptor_path = PathBuf::from(env::var_os("OUT_DIR").expect("OUT_DIR not set"))
.join("file_descriptor_set.bin");
fs::write(&file_descriptor_path, file_descriptors.encode_to_vec()).unwrap();
prost_build::Config::new()
.file_descriptor_set_path(&file_descriptor_path)
.skip_protoc_run()
.compile_protos(&["root.proto"], &["."])
.unwrap();
Rust 1.61 or higher.
The minimum supported Rust version may be changed in the future, but it will be done with a minor version bump.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.