Сборка Rust Protos

Описывает, как собирать Rust protos с помощью Cargo или Bazel.

Cargo

См. пакет protobuf-example для примера настройки сборки.

Bazel

Процесс сборки Rust библиотеки для определения Protobuf аналогичен другим языкам программирования:

  1. Используйте независимое от языка правило proto_library:

    proto_library(
        name = "person_proto",
        srcs = ["person.proto"],
    )
    
  2. Создайте Rust библиотеку:

    load("//third_party/protobuf/rust:defs.bzl", "rust_proto_library")
    
    proto_library(
        name = "person_proto",
        srcs = ["person.proto"],
    )
    
    rust_proto_library(
        name = "person_rust_proto",
        deps = [":person_proto"],
    )
    
  3. Используйте библиотеку, включив ее в Rust бинарный файл:

    load("//third_party/bazel_rules/rules_rust/rust:defs.bzl", "rust_binary")
    load("//third_party/protobuf/rust:defs.bzl", "rust_proto_library")
    
    proto_library(
        name = "person_proto",
        srcs = ["person.proto"],
    )
    
    rust_proto_library(
        name = "person_rust_proto",
        deps = [":person_proto"],
    )
    
    rust_binary(
        name = "greet",
        srcs = ["greet.rs"],
        deps = [
            ":person_rust_proto",
        ],
    )
    

{{% alert title="Примечание" color="note" %}} Не используйте rust_upb_proto_library или rust_cc_proto_library напрямую. rust_proto_library проверяет глобальный флаг сборки, чтобы выбрать подходящий бэкенд за вас. {{% /alert %}}