New Features

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

  • 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)

  • Basic support of resolving to multiple targets at module scope in new new name resolution engine
  • Annotate wrong order of const generic parameters without const_generics feature

    wrong order of generic arguments

Performance Improvements

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

Fixes

  • Improvements in crates local index:
    • 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

    • Fix loading crates local index on a nightly Rust toolchain

    • Fix unnecessary reload of crates local index after IDE restart
  • Don’t show separate nodes for stdlib dependencies when org.rust.cargo.fetch.actual.stdlib.metadata experimental feature is enabled
  • Don’t import default type parameters by Extract Function refactoring (Refactor | Extract | Method or Cmd + Alt + M)
  • Omit default type parameters in a Convert to type quick-fix text
  • Fix exception in Move refactoring (Refactor | Move or F6) when it was first cancelled and then invoked again
  • Fix type inference for array index operator in Rust 1.50
  • Fix unification with the never type ! in match arms
  • Fix name resolution of stdlib items with cfg attributes in some cases
  • Fix expansion of procedural macros with non-ASCII literals
  • Fix processing of break/continue expanded from a macro during control-flow analysis
  • Update LLDB/GDB pretty-printers to render HashMap/HashSet in Rust 1.52 or higher
  • Update GDB pretty-printers to render BTreeMap/BTreeSet in Rust 1.50 or higher
  • Improve parser recovery in function arguments

Internal Improvements

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

Full set of changes can be found here