tonic_build

Struct Builder

source
pub struct Builder { /* private fields */ }
Available on crate feature prost only.
Expand description

Service generator builder.

Implementations§

source§

impl Builder

source

pub fn build_client(self, enable: bool) -> Self

Enable or disable gRPC client code generation.

source

pub fn build_server(self, enable: bool) -> Self

Enable or disable gRPC server code generation.

source

pub fn build_transport(self, enable: bool) -> Self

Enable or disable generated clients and servers to have built-in tonic transport features.

When the transport feature is disabled this does nothing.

source

pub fn file_descriptor_set_path(self, path: impl AsRef<Path>) -> Self

Generate a file containing the encoded prost_types::FileDescriptorSet for protocol buffers modules. This is required for implementing gRPC Server Reflection.

source

pub fn skip_protoc_run(self) -> Self

In combination with with file_descriptor_set_path, this can be used to provide a file descriptor set as an input file, rather than having prost-build generate the file by calling protoc.

source

pub fn out_dir(self, out_dir: impl AsRef<Path>) -> Self

Set the output directory to generate code to.

Defaults to the OUT_DIR environment variable.

source

pub fn extern_path( self, proto_path: impl AsRef<str>, rust_path: impl AsRef<str>, ) -> Self

Declare externally provided Protobuf package or type.

Passed directly to prost_build::Config.extern_path. Note that both the Protobuf path and the rust package paths should both be fully qualified. i.e. Protobuf paths should start with “.” and rust paths should start with “::”

source

pub fn field_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched messages, enums, and one-offs.

Passed directly to prost_build::Config.field_attribute.

source

pub fn type_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched messages, enums, and one-offs.

Passed directly to prost_build::Config.type_attribute.

source

pub fn message_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched messages.

Passed directly to prost_build::Config.message_attribute.

source

pub fn enum_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched enums.

Passed directly to prost_build::Config.enum_attribute.

source

pub fn boxed<P: AsRef<str>>(self, path: P) -> Self

Add additional boxed fields.

Passed directly to prost_build::Config.boxed.

source

pub fn btree_map<I, S>(self, paths: I) -> Self
where I: IntoIterator<Item = S>, S: AsRef<str>,

Configure the code generator to generate Rust BTreeMap fields for Protobuf map type fields.

Passed directly to prost_build::Config.btree_map.

Note: previous configured paths for btree_map will be cleared.

source

pub fn bytes<I, S>(self, paths: I) -> Self
where I: IntoIterator<Item = S>, S: AsRef<str>,

Configure the code generator to generate Rust bytes::Bytes fields for Protobuf bytes type fields.

Passed directly to prost_build::Config.bytes.

Note: previous configured paths for bytes will be cleared.

source

pub fn server_mod_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched server mods. Matches on the package name.

source

pub fn server_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched service servers. Matches on the service name.

source

pub fn client_mod_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched client mods. Matches on the package name.

source

pub fn client_attribute<P: AsRef<str>, A: AsRef<str>>( self, path: P, attribute: A, ) -> Self

Add additional attribute to matched service clients. Matches on the service name.

source

pub fn proto_path(self, proto_path: impl AsRef<str>) -> Self

Set the path to where tonic will search for the Request/Response proto structs live relative to the module where you call include_proto!.

This defaults to super since tonic will generate code in a module.

source

pub fn protoc_arg<A: AsRef<str>>(self, arg: A) -> Self

Configure Prost protoc_args build arguments.

Note: Enabling --experimental_allow_proto3_optional requires protobuf >= 3.12.

source

pub fn disable_comments(self, path: impl AsRef<str>) -> Self

Disable service and rpc comments emission.

source

pub fn use_arc_self(self, enable: bool) -> Self

Emit Arc<Self> receiver type in server traits instead of &self.

source

pub fn disable_package_emission(self) -> Self

Emits GRPC endpoints with no attached package. Effectively ignores protofile package declaration from grpc context.

This effectively sets prost’s exported package to an empty string.

source

pub fn compile_well_known_types(self, compile_well_known_types: bool) -> Self

Enable or disable directing Prost to compile well-known protobuf types instead of using the already-compiled versions available in the prost-types crate.

This defaults to false.

source

pub fn include_file(self, path: impl AsRef<Path>) -> Self

Configures the optional module filename for easy inclusion of all generated Rust files

If set, generates a file (inside the OUT_DIR or out_dir() as appropriate) which contains a set of pub mod XXX statements combining to load all Rust files generated. This can allow for a shortcut where multiple related proto files have been compiled together resulting in a semi-complex set of includes.

source

pub fn emit_rerun_if_changed(self, enable: bool) -> Self

Enable or disable emitting cargo:rerun-if-changed=PATH instructions for Cargo.

If set, writes instructions to stdout for Cargo so that it understands when to rerun the build script. By default, this setting is enabled if the CARGO environment variable is set. The CARGO environment variable is set by Cargo for build scripts. Therefore, this setting should be enabled automatically when run from a build script. However, the method of detection is not completely reliable since the CARGO environment variable can have been set by anything else. If writing the instructions to stdout is undesirable, you can disable this setting explicitly.

source

pub fn generate_default_stubs(self, enable: bool) -> Self

Enable or disable directing service generation to providing a default implementation for service methods. When this is false all gRPC methods must be explicitly implemented. When this is true any unimplemented service methods will return ‘unimplemented’ gRPC error code. When this is true all streaming server request RPC types explicitly use tonic::codegen::BoxStream type.

This defaults to false.

source

pub fn codec_path(self, codec_path: impl Into<String>) -> Self

Override the default codec.

If set, writes {codec_path}::default() in generated code wherever a codec is created.

This defaults to "tonic::codec::ProstCodec"

source

pub fn skip_debug(self, path: impl AsRef<str>) -> Self

Skips generating impl Debug for types

source

pub fn compile( self, protos: &[impl AsRef<Path>], includes: &[impl AsRef<Path>], ) -> Result<()>

👎Deprecated since 0.12.3: renamed to compile_protos()

Compile the .proto files and execute code generation.

source

pub fn compile_with_config( self, config: Config, protos: &[impl AsRef<Path>], includes: &[impl AsRef<Path>], ) -> Result<()>

👎Deprecated since 0.12.3: renamed to compile_protos_with_config()

Compile the .proto files and execute code generation using a custom prost_build::Config. The provided config will be updated with this builder’s config.

source

pub fn compile_protos( self, protos: &[impl AsRef<Path>], includes: &[impl AsRef<Path>], ) -> Result<()>

Compile the .proto files and execute code generation.

source

pub fn compile_protos_with_config( self, config: Config, protos: &[impl AsRef<Path>], includes: &[impl AsRef<Path>], ) -> Result<()>

Compile the .proto files and execute code generation using a custom prost_build::Config. The provided config will be updated with this builder’s config.

source

pub fn compile_fds(self, fds: FileDescriptorSet) -> Result<()>

Execute code generation from a file descriptor set.

source

pub fn compile_fds_with_config( self, config: Config, fds: FileDescriptorSet, ) -> Result<()>

Execute code generation from a file descriptor set using a custom prost_build::Config.

source

pub fn service_generator(self) -> Box<dyn ServiceGenerator>

Turn the builder into a ServiceGenerator ready to be passed to prost-builds Config::service_generator.

Trait Implementations§

source§

impl Clone for Builder

source§

fn clone(&self) -> Builder

Returns a copy of the value. Read more
1.6.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Builder

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.