rules_rust
rules_rust copied to clipboard
crate_name field should allow `-` for consistency
The current documentation reads:
Crate name to use for this target.
This must be a valid Rust identifier, i.e. it may contain only alphanumeric characters and underscores. Defaults to the target name, with any hyphens replaced by underscores.
It is common to use hyphens in crate names in Cargo.toml, and that is handled gracefully both by cargo and rules_rust. However, if you have a binary and library in the same crate, it's not unusual to want to do:
rust_binary(
# Produces a kebab-case binary
name = "my-cli"
# ...
)
rust_library(
name = "my-cli-lib" # avoid name collision
# Inferred crate name will be my_cli_lib per the docs, so copy the name from Cargo.toml
crate_name = "my-cli" # allows code to use my_cli::Blah to compile both with Bazel & Cargo
# ...
)
However, this is not allowed, because if you specify this field, you need to convert the hyphens to underscores yourself.
rust_library(
name = "my-cli-lib"
crate_name = "my_cli" # OK
# ...
)
But the problem with this is that the crate's name no longer matches up with the name as specified in Cargo.toml, which is unnecessarily confusing.
How about instead converting - to _ before doing the character check?