Rust analyzer seems to use resolver = "1"

⚓ Rust    📅 2025-07-24    👤 surdeus    👁️ 1      

surdeus

Hello,

Today I encountered a weird behavior when trying to enable features based on a custom --cfg context="cond_a" flag. When building with cargo build the correct features gets enabled, but rust-analyzer in VSCode thinks all the features are enabled.

I made a project to reproduce the problem: GitHub - nponsard/rust-cfg-testing

When opening rust-analyzer-test/src/main.rs, I can see that the lines that does not match the "context flags" are disabled, but rust analyzer complains about the function other_crate::test_print() expecting 4 arguments.

This means that for rust-analyzer both features are enabled. These features should be enabled only when a certain "context" flag is set:

[dependencies]
other-crate = { path = "../other-crate" }
[target.'cfg(context = "cond_a")'.dependencies]
other-crate = { path = "../other-crate", features = ["a"] }
[target.'cfg(context = "cond_b")'.dependencies]
other-crate = { path = "../other-crate", features = ["b"] }

This sounds like cargo build is using the resolver version 2 but rust-analyzer is using the resolver version 1.

Is this a bug or did I configure something wrong ?

2 posts - 1 participant

Read full topic

🏷️ Rust_feed