New Features

  • #6829 Add Unreachable code inspection and quick-fix to remove unreachable code

  • #6457 Add Unresolved reference inspection for Cargo.toml files. The inspection highlights unresolved references in TOML string literals and provides a quick-fix to create a new file for the corresponding unresolved path.

    Note, the plugin provides such references for local dependencies, build scripts, workspace paths, and Cargo features. The set of analyzed references can be extended by other plugins (by @Kobzol)

  • #7033 Basic support of resolving to multiple targets at module scope in new new name resolution engine

  • #7005 Annotate wrong order of const generic parameters without const_generics feature

    wrong order of generic arguments

Performance Improvements

  • #7038 Speedup a proc-macro expansion result serialization/deserialization in the macro expansion engine

Fixes

  • Improvements in crates local index:
    • #6969 Make dependencies completion in Cargo.toml more intuitive and faster when using crates local index. Note, this feature is disabled by default for now. To use it, enable org.rust.crates.local.index experimental feature

    • #7035 Fix loading crates local index on a nightly Rust toolchain

    • #7031 Fix unnecessary reload of crates local index after IDE restart

  • #6890 Don’t show separate nodes for stdlib dependencies when org.rust.cargo.fetch.actual.stdlib.metadata experimental feature is enabled

  • #7012 Don’t import default type parameters by Extract Function refactoring (Refactor | Extract | Method or Cmd + Alt + M)

  • #7026 Omit default type parameters in a Convert to type quick-fix text

  • #6945 Fix exception in Move refactoring (Refactor | Move or F6) when it was first cancelled and then invoked again

  • #6968 Don’t suggest postfix templates inside string literals

  • #7013 Fix type inference for array index operator in Rust 1.50

  • #7007 Fix unification with the never type ! in match arms

  • #7053 Fix name resolution of stdlib items with cfg attributes in some cases

  • #7051 Fix expansion of procedural macros with non-ASCII literals

  • #7018 Fix processing of break/continue expanded from a macro during control-flow analysis

  • #7059 Update LLDB/GDB pretty-printers to render HashMap/HashSet in Rust 1.52 or higher

  • #7036 Update GDB pretty-printers to render BTreeMap/BTreeSet in Rust 1.50 or higher

  • #7019 Improve parser recovery in function arguments

Internal Improvements

  • #7042 Now it’s possible to use stdlib API appeared in Kotlin 1.4

Full set of changes can be found here