Open epage opened 3 months ago
https://github.com/rust-lang/cargo/issues/14010#issuecomment-2148408439
This makes me worried about
dep_name/feature_name
syntax on Edition 2024. It now requires also addingdep:dep_name
at which point it isn't much different thandep_name?/feature_name
.I had missing this part in past discussions (e.g. this zulip topic). It seems like we should have either changed it in Edition 2024 to not need
dep:dep_name
or transition out the syntax according to #10556. I worry that changing the meaning ofdep_name/feature_name
would be too subtle. Maybe we should at least go forward with the deprecation ofdep_name/feature_name
as mentioned in the comments of #10556?
https://github.com/rust-lang/cargo/issues/14010#issuecomment-2148415751
Also, another reason why deprecating implicit features doesn't play well with
dep_name/feature_name
is that[features] foo = ["dep:dep_name"] bar = ["dep_name/feature_name"]
and
[features] bar = ["dep:dep_name", "dep_name/feature_name"]
are valid while the following is not
[features] bar = ["dep_name/feature_name"]
That inconsistency feels weird.
We discussed this in today's team meeting and lean towards "dep_name/feature_name"
implying "dep:dep_name"
in Edition 2024 with it being normalized in the published Cargo.toml
file.
Re-opened due to #14295. See #14283 for more context.
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:serde
ifserde/derive
is usedserde/derive
syntax, removing it in a new edition (#10556)Notes
This was split out of #14015 assuming we'll go with a different solution than it
Version
No response