Consolidate rust_prost_library and fix extension-only proto generation. (#2047)

This PR consolidates rust_prost_library and rust_tonic_library into one rule; `rust_prost_library`. `rust_prost_library` will generate tonic services if you provide a `tonic_plugin` in the toolchain definition. If you do not provide that plugin and you try to build a proto with services, it will print a warning that you should add a `tonic_plugin`.

This PR also handles extension-only proto files. Prost does not generate a file if there are no messages, enums, or services and it appears that Prost doesn't even support proto2 extensions. So to work around this issue, protoc_wrapper will generate an empty `.rs` file in the case that there are only extensions defined in a file.

Closes: #2046 
19 files changed
tree: e8acd94aeb276f3feaa49be33126efd7e95fcfea
  1. .bazelci/
  2. .github/
  3. bindgen/
  4. cargo/
  5. crate_universe/
  6. docs/
  7. examples/
  8. proto/
  9. rust/
  10. test/
  11. tools/
  12. util/
  13. wasm_bindgen/
  14. .bazelignore
  15. .bazelrc
  16. .clang-format
  17. .gitattributes
  18. .gitignore
  19. .rustfmt.toml
  20. ARCHITECTURE.md
  21. AUTHORS
  22. BUILD.bazel
  23. CODEOWNERS
  24. COMPATIBILITY.md
  25. CONTRIBUTING.md
  26. CONTRIBUTORS
  27. LICENSE.txt
  28. MODULE.bazel
  29. README.md
  30. version.bzl
  31. WORKSPACE.bazel
README.md

Rust Rules

  • Postsubmit Build status

Overview

This repository provides rules for building Rust projects with Bazel.

Community

General discussions and announcements take place in the GitHub Discussions, but there are additional places where community members gather to discuss rules_rust.

Documentation

Please refer to the full documentation.