IntelliJ Rust Changelog #150
New Features
-
#7211 Allow users to create their own postfix templates (by @shocoman)
-
#7137 Add an intention to create a tuple struct from an unresolved function call (by @Kobzol)
-
#7060 Add
Generate documentation stub
intention to generate a documentation stub as described here and here (by @0x7CA) -
#7247 Display enums with variants in code completion popup when appropriate (by @shocoman)
-
#7307 Support procedural macro expansion on Apple Silicon machines. Note:
-
You should use
aarch64-apple-darwin
toolchain to make procedural macro expansion work -
The procedural macro expansion is still disabled by default. To turn it on, enable
org.rust.cargo.evaluate.build.scripts
andorg.rust.macros.proc
experimental features
-
-
#7067 Crates local index for dependencies completion and inspections is now being updated on project changes. Note, currently this feature is experimental and can be enabled with
org.rust.crates.local.index
option in experimental features dialog. -
Highlighting improvements:
-
#7171 Highlight all
await
operators when under the caret (by @t-kameyama) -
#7356 Provide highlighting of format string literals in any macros that expand to macros like
println
,write
,format
, etc -
#7347 Highlight *emphasis* and **strong emphasis** text in Rust doc comments
-
#7369 Support doctests in code fences wrapped in different number of backticks or tildes
-
#7362 Introduce
Format specifier inside format parameter
color forstd::fmt
format specifiers -
#7243 Fix syntax highlighting for variables / parameters (by @LastExceed)
-
-
#7373 Support
:pat_param
macro_rules!
matcher (from Rust 1.53.0) -
#6842 Extend
Self convention
inspection with new method prefixes (get_
,set_
andwith_
) (by @Kobzol)
Fixes
-
#7393 Improve
Implement Members
action and quick-fix:-
Never expand type aliases
-
Don’t expand macro types
-
Auto-import trait names from type bounds
-
Resolve name conflicts during auto-import:
-
If the target item is in the scope with a different name (
use A as B
), use that name -
If the name exists in the scope, but refers to another item, use a qualified path to the target item
-
If the target can’t be imported, use crate-qualified path to the item (this may produce incorrect code, but it should be simpler to fix)
-
-
-
#7412 Do not expand type aliases when generating getters and setters (by @Kobzol)
-
#6663 Properly substitute generic method arguments in
Fill missing arguments
quick-fix (by @Kobzol) -
#7407 Parenthesize inlined expressions in
Inline Value
refactoring if they could produce invalid or semantically different code after performing the refactoring (by @Kobzol) -
#7339 Keep existing comments when using
Nest use statements
intention (by @Kobzol) -
#7397 The
Nest use statements
intention now works properly on all places inside ause
group (by @Kobzol) -
#7390 Support modules named after Rust keywords in
cargo test
run configurations (by @Kobzol) -
#7267 The type of custom macros that have log-like names (like
error!
,warn!
ordebug!
) is now correctly inferred (by @Kobzol) -
#7316 Fix pretty printers if WSL toolchain is used (it can be enabled using
org.rust.wsl
experimental feature) -
#7395 Properly escape crate URLs produced by line markers in Cargo.toml. Should fix exception by clicking on the corresponding icon if you use IntelliJ Projector with IntelliJ Rust plugin on backend
-
#7288 Fix false-positive
Use of possibly uninitialized variable
E0381 errors and infinite analysis when a function containsasm!()
macro calls -
#7384 Don’t allow sharing/exporting data of crate local index
-
#7373 Fix
:pat
matcher - now it should not parseor patterns
Internal Improvements
-
#7358 Remove special handling of log macros in the parser. Log macros can now be resolved via the macro expansion machinery (by @Kobzol)
-
#7401 Add API to get inferred method type and substitution
Full set of changes can be found here