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 --doc
for example.prost
: Enables usage of prost generator (enabled by default).transport
: Enables generation ofconnect
method 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 build
The 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.