#序列化 #protoc #protobuf #proto #buffer #api #protocols

构建 protoc-rust

protoc --rust_out=... 可作为 API 使用。protoc 需要在 $PATH 中,protoc-gen-run 不需要。

81 个稳定版本

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.4.1 2017年6月24日

#17#protoc

Download history 36512/week @ 2024-03-14 27421/week @ 2024-03-21 48816/week @ 2024-03-28 23852/week @ 2024-04-04 27862/week @ 2024-04-11 28967/week @ 2024-04-18 25789/week @ 2024-04-25 24010/week @ 2024-05-02 25817/week @ 2024-05-09 29822/week @ 2024-05-16 8721/week @ 2024-05-23 6353/week @ 2024-05-30 5200/week @ 2024-06-06 4520/week @ 2024-06-13 4825/week @ 2024-06-20 4327/week @ 2024-06-27

20,065 每月下载量
少于 55 crates 中使用

MIT 许可证

2MB
41K SLoC

生成 .rs 文件的 API

生成 .rs 文件的 API,可用于例如 从 build.rs 中

示例代码

extern crate protoc_rust;

use protoc_rust::Customize;

fn main() {
    protoc_rust::Codegen::new()
        .out_dir("src/protos")
        .inputs(&["protos/a.proto", "protos/b.proto"])
        .include("protos")
        .run()
        .expect("protoc");
}

Cargo.toml

[build-dependencies]
protoc-rust = "2.0"

注意 1:此 API 需要 protoc 命令存在于 $PATH 中。尽管不需要 protoc-gen-rust 命令。

注意 2:建议将 protoc-rust 的构建依赖版本与 protobuf 依赖版本相同。

另一种选择是使用 纯 Rust .proto 解析器和代码生成器


lib.rs:

生成 .rs 文件的 API。

此 API 需要 protoc 命令存在于 $PATH 中,或者显式传递给 Codegen 对象。

extern crate protoc_rust;

fn main() {
    protoc_rust::Codegen::new()
        .out_dir("src/protos")
        .inputs(&["protos/a.proto", "protos/b.proto"])
        .include("protos")
        .run()
        .expect("Running protoc failed.");
}

建议将 protoc-rust 的构建依赖版本与 protobuf 依赖版本相同。

另一种选择是使用 protobuf-codegen-pure

依赖

~2–11MB
~130K SLoC