This module provides a single place for all aspects, rules, and macros that are meant to have stardoc generated documentation.

Rules

rust_grpc_library

Builds a Rust library crate from a set of proto_librarys suitable for gRPC.

Example:

load("//proto:proto.bzl", "rust_grpc_library")

proto_library(
    name = "my_proto",
    srcs = ["my.proto"]
)

rust_grpc_library(
    name = "rust",
    deps = [":my_proto"],
)

rust_binary(
    name = "my_service",
    srcs = ["my_service.rs"],
    deps = [":rust"],
)

name

A unique name for this target.

deps

List of proto_library dependencies that will be built. One crate for each proto_library will be created with the corresponding gRPC stubs.

rust_deps

The crates the generated library depends on.


rust_proto_library

Builds a Rust library crate from a set of proto_librarys.

Example:

load("@rules_rust//proto:proto.bzl", "rust_proto_library")

proto_library(
    name = "my_proto",
    srcs = ["my.proto"]
)

rust_proto_library(
    name = "rust",
    deps = [":my_proto"],
)

rust_binary(
    name = "my_proto_binary",
    srcs = ["my_proto_binary.rs"],
    deps = [":rust"],
)

name

A unique name for this target.

deps

List of proto_library dependencies that will be built. One crate for each proto_library will be created with the corresponding stubs.

rust_deps

The crates the generated library depends on.


rust_proto_toolchain

Declares a Rust Proto toolchain for use.

This is used to configure proto compilation and can be used to set different protobuf compiler plugin.

Example:

Suppose a new nicer gRPC plugin has came out. The new plugin can be used in Bazel by defining a new toolchain definition and declaration:

load('@rules_rust//proto:toolchain.bzl', 'rust_proto_toolchain')

rust_proto_toolchain(
   name="rust_proto_impl",
   grpc_plugin="@rust_grpc//:grpc_plugin",
   grpc_compile_deps=["@rust_grpc//:grpc_deps"],
)

toolchain(
    name="rust_proto",
    exec_compatible_with = [
        "@platforms//cpu:cpuX",
    ],
    target_compatible_with = [
        "@platforms//cpu:cpuX",
    ],
    toolchain = ":rust_proto_impl",
)

Then, either add the label of the toolchain rule to register_toolchains in the WORKSPACE, or pass it to the --extra_toolchains flag for Bazel, and it will be used.

See @rules_rust//proto:BUILD for examples of defining the toolchain.

name

A unique name for this target.

edition

The edition used by the generated rust source.

grpc_compile_deps

The crates the generated grpc libraries depends on.

grpc_plugin

The location of the Rust protobuf compiler plugin to generate rust gRPC stubs.

proto_compile_deps

The crates the generated protobuf libraries depends on.

proto_plugin

The location of the Rust protobuf compiler plugin used to generate rust sources.

protoc

The location of the protoc binary. It should be an executable target.


Macros and Functions

rust_proto_repositories

Declare dependencies needed for proto compilation.

register_default_toolchain

If True, the default rust_proto_toolchain (@rules_rust//proto:default-proto-toolchain) is registered. This toolchain requires a set of dependencies that were generated using cargo raze. These will also be loaded.


rust_proto_transitive_repositories

Load transitive dependencies of the @rules_rust//proto rules.

This macro should be called immediately after the rust_proto_repositories macro.