IntelliJ Rust Changelog #136
New Features
-
#6378 Introduce the new experimental engine for name resolution (disabled by default). The new algorithm (aka name resolution 2.0) uses the fixed-point iteration approach and aims to improve our support for complex glob imports (
use foo::*
) and re-exports. Also, it will allow the plugin to expand the upcoming macros 2.0 properly. The new algorithm works for top-level items only, so local variables as well as type inference functionality won’t be affected. If you are ready to give it a try, enableUse experimental name resolution engine
option inSettings / Preferences | Languages & Frameworks | Rust
settings. Although the feature is currently experimental, we encourage you to try it out and share if you face any issues. It will help us to polish the new algorithm and make it the default one. Please useHelp | Create New Issue
action in your IDE or our issue tracker directly to file your issues. -
#6276 Support
Go to Declaration
(Ctrl + B) for Cargo features incfg
andcfg_attr
attributes. -
#6396 Take into account macro invocations in type context, e.g.
const FOO: foobar!() = 1
-
Compiler errors detection improvements:
-
#6352, #6413 Detect attributes that require parentheses but haven’t them, and suggest
Add parentheses
quick-fix (by @zeroeightysix) -
#6372 Detect the missing type of
const
andstatic
items as a semantic error and produce a user-friendly error message. Also, provide a quick-fix to add explicit type in such cases (by @Kobzol) -
#6319 Detect E0057 in some cases (by @zeroeightysix)
-
Performance Improvements
- #6395 Slightly optimize syntax highlighting and other analysis
Fixes
-
#6380 Fix macro group matching in some cases. In particular, this fixes completion in
tokio 0.3
-
#6323 Validate Perf profiler settings when running code with CPU profiler on Linux. Now, in case of no
perf
path specified in settings, IDE will show an error with a link to configure the profiler settings
Full set of changes can be found here