Crate tonic_build
source ·Expand description
tonic-build compiles proto files via prost and generates service stubs
and proto definitiones for use with tonic.
Feature flags
cleanup-markdown: Enables cleaning up documentation from the generated code. Useful when documentation of the generated code failscargo test --docfor example.prost: Enables usage of prost generator (enabled by default).transport: Enables generation ofconnectmethod usingtonic::transport::Channel(enabled by default).
Required dependencies
[dependencies]
tonic = <tonic-version>
prost = <prost-version>
[build-dependencies]
tonic-build = <tonic-version>Examples
Simple
fn main() -> Result<(), Box<dyn std::error::Error>> {
tonic_build::compile_protos("proto/service.proto")?;
Ok(())
}Configuration
fn main() -> Result<(), Box<dyn std::error::Error>> {
tonic_build::configure()
.build_server(false)
.compile(
&["proto/helloworld/helloworld.proto"],
&["proto/helloworld"],
)?;
Ok(())
}NixOS related hints
On NixOS, it is better to specify the location of PROTOC and PROTOC_INCLUDE explicitly.
$ export PROTOBUF_LOCATION=$(nix-env -q protobuf --out-path --no-name)
$ export PROTOC=$PROTOBUF_LOCATION/bin/protoc
$ export PROTOC_INCLUDE=$PROTOBUF_LOCATION/include
$ cargo buildThe reason being that if prost_build::compile_protos fails to generate the resultant package,
the failure is not obvious until the include!(concat!(env!("OUT_DIR"), "/resultant.rs"));
fails with No such file or directory error.
Modules
Service code generation for client
This module provides utilities for generating
tonic service stubs and clients
purely in Rust without the need of proto files. It also enables you to set a custom Codec
if you want to use a custom serialization format other than protobuf.Service code generation for Server
Structs
Attributes that will be added to
mod and struct items.Service generator builder.
Builder for the generic code generation of server and clients.
Traits
Functions
Simple
.proto compiling. Use configure instead if you need more options.Configure
tonic-build code generation.