IntelliJ Rust Changelog #94
New Features
-
Highlight non-exhaustive
matchexpressions and useless patterns in match arms . Note, it’s initial version so it doesn’t cover all possible cases at this moment (by @Leidenn2509 & @ortem)

- Make some improvements of
cargo checkexternal annotator:- Introduce
External linteroptions instead ofcargo checkones. It generalizes settings related tocargo check - Make possible to use
clippyinstead ofcargo checkto annotate code. You can choose external tool viaPreferences | Languages & Frameworks | Rust | Cargo | External linteroption - Provide
External Linterinspection. It allows analyzing all code in batch mode using chosen external linter - Create quick fixes from
cargo check/clippysuggestions
- Introduce
-
Run
rustfmton the document before saving. It’s disabled by default. You can enable it viaPreferences | Languages & Frameworks | Rust | Rustfmt | Run rustfmt on Saveoption. Note, it can affect UI responsiveness in some cases -
Support completion of primitive types

-
Add
Initialize with a default valuequick fix forUse of possibly uninitialized variableerror annotation. Note, it just initializes a local variable, so it doesn’t make code valid in all cases
-
Implement
Invert Ifintention (by @zinoviy23)
-
Improve
Simplify boolean expression. Now it can convert!(expr1 == expr2)toexpr1 != expr2 -
Support
crateandpub(in path)restricted visibility better. Now the plugin correctly annotate usage of items with such visibility in wrong places and doesn’t add them in completion - Quick documentation improvements:
- Provide quick documentation for primitive types
- Correctly resolve links to macros that declared in non-crate root modules
- Provide correctly links to primitive types and method of primitive types
-
Correctly parse underscore imports. See the corresponding RFC for more details (by @Kobzol)
-
Provide
Make mutablequick fix for parameters with reference types (by @snpefk)
-
Support
?operator in macro definition. See the corresponding RFC for more details -
Show variable’s value by hovering while debugging. Delay time is configurable via
Preferences | Build, Execution, Deployment | Debugger | Data Views | Value tooltip delay
Fixes
-
Reformat File with Rustfmtuses correct config file now -
Don’t jump over multi-line whitespaces in up/down mover
-
Allow expanding std macro invocations like
vec![1, 2, 3] -
Do not allow renaming numeric fields of tuple structs
-
Correctly convert module name to
selfwhileNest use statementsintention (by @Kobzol) -
Don’t try to setup cargo package module roots if project is already disposed. It prevents some weird exceptions on project closing
-
Take into account defaulted type parameters in
Implement membersrefactoring -
Fix
Convert to assert_eq!andConvert to assert_ne!quick fixes. Now they produce correct AST while code transformation
Internal Improvements
-
Add tests to check our analysis on real projects like
cargoandtokio -
Provide binary compatible API for Rust project settings
-
Move
ContributedReferenceHostinterface toRsLitExprAPI from its implementation. So now third-party plugins can rely on it -
Update IDEA & CLion EAPs and nightly rust