rust-lang/cargo · error · anyhow::Error
library target names cannot contain hyphens: {}
Error message
library target names cannot contain hyphens: {} What it means
Error "library target names cannot contain hyphens: {}" thrown in rust-lang/cargo.
Source
Thrown at src/workspace/parser/targets.rs:1152
fn validate_build_name(build: &str) -> CargoResult<()> {
if Path::new(build).file_stem().is_none() {
anyhow::bail!("invalid `package.build` file name");
}
Ok(())
}
fn name_or_panic(target: &TomlTarget) -> &str {
target
.name
.as_deref()
.unwrap_or_else(|| panic!("target name is required"))
}
fn validate_lib_name(target: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
validate_target_name(target, TARGET_KIND_HUMAN_LIB, TARGET_KIND_LIB, warnings)?;
let name = name_or_panic(target);
if name.contains('-') {
anyhow::bail!("library target names cannot contain hyphens: {}", name)
}
Ok(())
}
fn validate_bin_name(bin: &TomlTarget, warnings: &mut Vec<String>) -> CargoResult<()> {
validate_target_name(bin, TARGET_KIND_HUMAN_BIN, TARGET_KIND_BIN, warnings)?;
let name = name_or_panic(bin).to_owned();
if restricted_names::is_conflicting_artifact_name(&name) {
anyhow::bail!(
"the binary target name `{name}` is forbidden, \
it conflicts with cargo's build directory names",
)
}
Ok(())
}
View on GitHub (pinned to 0e07a15537)
Solutions
- Replace hyphens with underscores in the library target name.
- Set `[lib] name` explicitly to a name without hyphens.
When it happens
Trigger: Thrown at src/workspace/parser/targets.rs:1152 when the library encounters an invalid state.
Common situations: Occurs when a `[lib]` target name contains hyphens. Replace hyphens with underscores, since library crate names must be valid Rust identifiers.
AI-assisted analysis of rust-lang/cargo@0e07a15537 (2026-08-06).
Data as JSON: /data/errors/4400322375732fed.json.
Report an issue: GitHub.