#tonic #protobuf #codec #codegen

tonic-codec-protobuf

一个通过rust-protobuf实现application/grpc/proto的tonic::Codec

1个不稳定版本

0.1.0 2024年6月2日

#23#tonic

MIT 许可证

10KB
135

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许可证

依赖

~4–6MB
~105K SLoC