Problem
If nothing can activate an optional dependency, cargo acts as if the dependency doesn't exist which creates poor error messages.
Also, with how things are arranged, the unused optional dependency lint doesn't get reported which could at least reduce the burden on the error message.
Steps
Baseline Cargo.toml:
cargo-features = ["edition2024"]
[package]
name = "cargo-14010"
version = "0.1.0"
edition = "2024"
[dependencies]
serde = { version = "1.0.203", optional = true }
$ cargo +nightly check -Zcargo-lints
warning: unused optional dependency
--> Cargo.toml:8:1
|
8 | serde = { version = "1.0.203", optional = true }
| -----
|
= note: `cargo::unused_optional_dependency` is set to `warn` by default
= help: remove the dependency or activate it in a feature with `dep:serde`
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.00s
Add the following to Cargo.toml:
[features]
serde = ["serde/derive"]
$ cargo +nightly check -Zcargo-lints
error: failed to parse manifest at `/home/epage/src/personal/dump/cargo-14010-1/Cargo.toml`
Caused by:
feature `serde` includes `serde/derive`, but `serde` is not a dependency
Possible Solution(s)
Notes
This was split out of #14015 assuming we'll go with a different solution than it
Version
No response
Problem
If nothing can activate an optional dependency, cargo acts as if the dependency doesn't exist which creates poor error messages.
Also, with how things are arranged, the unused optional dependency lint doesn't get reported which could at least reduce the burden on the error message.
Steps
Baseline
Cargo.toml:Add the following to
Cargo.toml:Possible Solution(s)
dep:serdeifserde/deriveis usedserde/derivesyntax, removing it in a new edition (Transition out weak feature syntax in an edition #10556)Notes
This was split out of #14015 assuming we'll go with a different solution than it
Version
No response