#tonic #codegen #protobuf #codec #tonic-build

tonic-build-protobuf

使用 rust-protobuf 对 tonic gRPC 实现进行代码生成的模块

1 个不稳定版本

0.1.0 2024 年 6 月 2 日

#1481网络编程

MIT 许可证

18KB
336

tonic-build-protobuf / tonic-codec-protobuf

通过 rust-protobuf 编译 proto 文件并生成与 tonic 一起使用的服务存根

功能

所需依赖

[dependencies]
tonic = "<tonic-version>"
protobuf = "<protobuf-version>"
tonic-codec-protobuf = "<tonic-codec-protobuf-version>"

[build-dependencies]
tonic-build-protobuf = "<tonic-build-protobuf-version>"

示例

build.rs

fn main() {
    // Project layout:
    // .
    // ├── Cargo.toml
    // ├── build.rs
    // ├── include
    // │   └── rustproto.proto
    // ├── proto
    // │   └── debugpb.proto
    // └── src
    //     └── lib.rs
    tonic_build_protobuf::Builder::new()
        .out_dir(format!(
            "{}/protos",
            std::env::var("OUT_DIR").expect("No OUT_DIR defined")
        ))
        .proto_path("crate")
        .file_name(|pkg, svc| format!("{pkg}_{svc}_tonic"))
        .codec_path("::tonic_codec_protobuf::ProtobufCodecV3")
        .compile(&["proto/debugpb.proto"], &["proto", "include"]);
}

然后您可以在代码中像这样引用生成的 Rust

mod generated {
    include!(concat!(env!("OUT_DIR"), "debugpb_debug_tonic.rs"));
}

pub use generated::*;

请参阅这里的示例

许可证

本项目采用 MIT 许可证 许可。

依赖项

~5–14MB
~184K SLoC