14 个不稳定版本 (6 个重大变更)

0.7.0 2024年7月8日
0.6.0 2024年2月7日
0.5.0 2023年9月1日
0.4.1 2023年6月25日
0.1.0 2022年8月14日

#1158 in 编码

Download history 35608/week @ 2024-04-20 30197/week @ 2024-04-27 33144/week @ 2024-05-04 42329/week @ 2024-05-11 33792/week @ 2024-05-18 31701/week @ 2024-05-25 45814/week @ 2024-06-01 38066/week @ 2024-06-08 34567/week @ 2024-06-15 29107/week @ 2024-06-22 27614/week @ 2024-06-29 36640/week @ 2024-07-06 23606/week @ 2024-07-13 36352/week @ 2024-07-20 40816/week @ 2024-07-27 34412/week @ 2024-08-03

每月141,193次下载
93 个crate中使用(通过protox

MIT/Apache

160KB
4K SLoC

crates.io docs.rs deps.rs MSRV Continuous integration codecov Apache 2.0 OR MIT licensed

protox

protobuf 编译器的 rust 实现,旨在作为库使用,例如与prost-build一起使用,以避免需要构建 protoc

示例

编译单个源文件

assert_eq!(protox::compile(["root.proto"], ["."]).unwrap(), FileDescriptorSet {
    file: vec![
        FileDescriptorProto {
            name: Some("root.proto".to_owned()),
            /* ... */
        }
    ],
});

prost-build一起使用

let file_descriptors = protox::compile(["root.proto"], ["."]).unwrap();
prost_build::compile_fds(file_descriptors).unwrap();

tonic-build一起使用

let file_descriptors = protox::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();

tonic_build::configure()
    .build_server(true)
    .file_descriptor_set_path(&file_descriptor_path)
    .skip_protoc_run()
    .compile(&["root.proto"], &["."])
    .unwrap();

错误信息

此 crate 使用 miette 为错误添加额外的详细信息。为了获得漂亮的错误信息,请将 miette 作为依赖项添加,并启用 fancy 功能,并从您的构建脚本返回 miette::Result

fn main() -> miette::Result<()> {
  let _ = protox::compile(["root.proto"], ["."])?;

  Ok(())
}

示例错误信息

Error:
  × name 'Bar' is not defined
   ╭─[root.proto:3:1]
 3 │ message Foo {
 4 │     Bar bar = 1;
   ·     ─┬─
   ·      ╰── found here
 5}
   ╰────

最低支持的 Rust 版本

Rust 1.70 或更高。

最低支持的 Rust 版本可能在将来更改,但将以较小的版本号升级的方式完成。

许可协议

许可协议为以下之一:

任选其一。

本项目包括从 Protocol Buffers 项目导入的代码,该代码在原始 (BSD) 许可证下提供。

贡献

除非您明确表示,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,应如上所述双重许可,不附加任何额外条款或条件。

依赖项

~3.5MB
~31K SLoC