Expand description
tonic-build compiles proto files via prost and generates service stubs
and proto definitiones for use with tonic.
§Features
rustfmt: This feature enables the use ofrustfmtto format the output code this makes the code readable and the error messages nice. This requires thatrustfmtis installed. This is 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§
Structs§
- Attributes
- Attributes that will be added to
modandstructitems. - Builder
prost - Service generator builder.
Traits§
Functions§
- compile_
protos prost - Simple
.protocompiling. Useconfigureinstead if you need more options. - configure
prost - Configure
tonic-buildcode generation. - fmt
rustfmt - Format files under the out_dir with rustfmt