Description
#[cfg(panic = "...")]
was recently stablized in nightly. At the moment, rust-analyzer always uses panic = "unwind"
, making it difficult to write code for "abort"
, similar to #7225.
My first thought was to set [profile.dev] panic = "abort"
in Cargo.toml
, but that didn't work. As it turns out, RA gets the built-in cfgs from running cargo -Z unstable-options rustc --print cfg
, which specifically ignores profile settings (rust-lang/cargo#9357):
- Profiles are ignored. This has historically caused confusion for people (for things like
debug_assertions
). However, all of cargo ignores profiles for the intended use case (--print=cfg
). It's not clear what this should do.
But if we pass --print
to rustc directly with cargo rustc --lib -- --print cfg
, it will use the settings from profile.dev
then. This kind of problem had never came up before, since panic
is the first and only cfg that can be affected by cargo profiles (aside from debug_assertions
which RA hardcodes anyway).