New Features

  • Provide completion for Cargo features in Cargo.toml

  • Introduce Go to generated declaration line marker for wasm_bindgen attribute. Now you can navigate to the generated TypeScript code right from the Rust code when working on WebAssembly projects

  • Move refactoring (Refactor | Move or F6) improvements:
    • Group items with related impls in Move items dialog

    • Add trait imports if necessary

    • Handle generic items properly

    • Detect E0116 and E0117 compiler errors when moving items to other crate

    • Check if the target module has an item with the same name when moving items
  • Completion improvements:

    • Complete parenthesis for repr attribute
  • Compiler errors detection improvements:
    • Detect E0364 and E0365 compiler errors and suggest Make public quick-fix (by @Kobzol)
    • Detect E0449 for enum variants and suggest Remove visibility qualifier quick-fix
  • Take execution context into account in the Run Anything popup. Now you can specify an execution context by holding down Alt key or by manually choosing a directory

Performance Improvements

  • Introduce new macro expansion cache shared between different projects. It brings slightly speedup if you open several projects that use the same stdlib or library version. Note, you can turn it off via Registry... | org.rust.lang.macros.persistentCache option

Fixes

  • Fix false positive Unused variable warning in Rust code containing async blocks
  • Fix false positive Match must be exhaustive error in case of uninhabited types, e.g. empty enums (by @fan-tom)
  • Do not show Add wildcard pattern intention for empty match expressions
  • Update GDB pretty-printers to render BTreeMap/BTreeSet on Rust 1.44.0 or higher
  • Provide proper rustc version by Create New Issue action which allows opening issue in our tracker right from your IDE
  • Do not load Cargo project structure twice. It makes Cargo projects loading a bit faster
  • Do not suggest lints in paths completion if path starts with :: (by @Kobzol)
  • Provide quick documentation for primitive types in stdlib
  • Allow duplicate parameter bindings for trait methods without a body (E0415 compiler error) (by @Kobzol)
  • Improve the parser recovering in case of incomplete paths

Internal Improvements

  • Simplify script for fetching Clippy lints which is used in lints completion (by @Kobzol)
  • 2020.3 platform is default for development now

Full set of changes can be found here