cargo-bazel: fix binary targets of proc-macro crates using wrong dep attribute (#3975) ## Problem When a crate has both a `rust_proc_macro` library target and `rust_binary` targets (e.g. development utilities shipped alongside the proc-macro), `make_rust_binary` unconditionally places the library in `deps`. However, rules_rust validates that proc-macro libraries must appear in `proc_macro_deps`, not `deps`. This causes analysis failures for any such crate. ## Solution In `make_rust_binary`, detect whether the crate's library target is a proc-macro by checking if `Rule::ProcMacro(_)` is present in `krate.targets`. If it is, insert the library label into `proc_macro_deps` instead of `deps`. ## Testing - `binary_of_proc_macro_crate_uses_proc_macro_deps`: verifies that the generated `rust_binary` has the `proc-macr`o lib in `proc_macro_deps` and not in `deps`. --------- Signed-off-by: Thomas Lam <[email protected]>
This repository provides rules for building Rust projects with Bazel.
The fastest way to try this in an empty project is to click the green “Use this template” button on https://github.com/bazel-starters/rust.
General discussions and announcements take place in the GitHub Discussions, but there are additional places where community members gather to discuss rules_rust.
Please refer to the full documentation.