#protobuf #codegen #pure #proto #customize #input #args

构建 protobuf-codegen-pure

使用 protobuf-parser 包进行纯 Rust 代码生成的 protobuf,工作进行中

66 个稳定版本

3.0.0-alpha.22021 年 11 月 1 日
2.28.0 2022 年 9 月 26 日
2.27.1 2022 年 2 月 5 日
2.25.2 2021 年 10 月 24 日
1.6.0 2018 年 5 月 11 日

#1931开发工具

Download history 23214/week @ 2024-03-14 21442/week @ 2024-03-21 20481/week @ 2024-03-28 23366/week @ 2024-04-04 23723/week @ 2024-04-11 26709/week @ 2024-04-18 24577/week @ 2024-04-25 21132/week @ 2024-05-02 27393/week @ 2024-05-09 28181/week @ 2024-05-16 25482/week @ 2024-05-23 26496/week @ 2024-05-30 23934/week @ 2024-06-06 27233/week @ 2024-06-13 26808/week @ 2024-06-20 22560/week @ 2024-06-27

105,737 每月下载量
不到 32 个 包中使用

MIT 许可证

2MB
41K SLoC

生成 .rs 文件的 API

生成 .rs 文件的 API,例如 从 build.rs 中使用。

示例代码

使用稳定的 rust-protobuf

extern crate protobuf_codegen_pure;

protobuf_codegen_pure::run(protobuf_codegen_pure::Args {
    out_dir: "src/protos",
    input: &["protos/a.proto", "protos/b.proto"],
    includes: &["protos"],
    customize: protobuf_codegen_pure::Customize {
      ..Default::default()
    },
}).expect("protoc");

使用 master 分支的 rust-protobuf

extern crate protobuf_codegen_pure;

protobuf_codegen_pure::Args::new()
    .out_dir("src/protos")
    .inputs(&["protos/a.proto", "protos/b.proto"])
    .include("protos")
    .run()
    .expect("protoc");

并在 Cargo.toml

[build-dependencies]
protobuf-codegen-pure = "2.3"

另一种选择是使用 protoc-rust 包,它依赖于 protoc 命令来解析描述符。这两个包应该产生相同的结果,否则请提交错误报告。

依赖项

~2–11MB
~131K SLoC