RustRover includes smart support for conditional compilation. It excludes disabled code blocks from code analysis and name resolution, making it unreachable for inspections, refactorings, and other IDE features that are normally turned on. The conditionally disabled code itself appears greyed-out.
Please note that toggling Cargo features through the RustRover UI does not affect compilation in any way. It only affects how your project appears in the IDE and whether certain features, such as name resolution, code analysis, and navigation, work for the toggled features.
Toggling Cargo workspace features manually
You can manually enable/disable Cargo workspace features.
Enable/disable a single feature
Locate the desired feature in Cargo.toml or in the sources and set/clear the corresponding checkbox in the gutter:
Gif
When you toggle features, RustRover checks the new state with several inspections. For example, if a feature you use in code is missing from workspace dependencies, the IDE will warn you and suggest a quick fix. It will also help you eliminate cyclic dependencies.
Completion will still be available for disabled items:
Using a conditionally disabled item results in an error, and RustRover suggests a quick fix to enable the corresponding feature:
Target architecture
If you’re writing platform-specific code and using configuration options (such as target_arch, target_os, target_env, and so on), RustRover can help you switch context in just one click.
Select a target architecture
Do one of the following:
Click the icon in the gutter next to the condition and select the desired triple:
Locate the dedicated switcher in the bottom right corner of the status bar and use it to select the target architecture: