New Features

  • Improve New project dialog to support cargo-generate templates. Now a WebAssembly project can be created using the corresponding template (by @avrong)

  • Add intention to import a qualified path. Now you can add use item for any part of a complex path under the caret (by @Kobzol)

  • Move refactoring (F6) improvements:

    • Search and update changed references when moving a top-level item. Previously, Search for references checkbox did not work and all the references remained the same after refactoring

    • Take re-exports into account when moving a single file

  • Provide true/false completion for boolean values (by @ozkriff)

  • Improve Wrong number of type arguments inspection

    • Support dyn Trait and impl Trait (by @Kobzol)

    • Provide Add missing type arguments fix (by @Kobzol). Currently, the fix adds only type parameters and ignores lifetimes and associated types

  • Add Substitute associated type intention (by @Kobzol)

  • Improve struct patterns completion:
    • Suggest only struct fields while completion in struct patterns (by @Kobzol)

    • Completion for .. syntax in struct patterns (by @Kobzol)
  • Type inference improvements:

    • Infer type for types implementing the Try trait when using question mark operator (by @Kobzol)
  • Add Main function not found in crate (E0601) inspection for build scripts
  • Fold external (non-project related) parts of backtraces (by @Kobzol)

Performance Improvements

  • Avoid name resolution while checking if an item is public or not. It should slightly improve performance of code insight

Fixes

  • Type inference improvements:
    • Infer type parameters from associated type bindings

    • Infer types of complex ? expressions

    • Ignore currently unsupported negative impl blocks during type inference. Fixes some Mismatched types false-positives related to negative impls in stdlib

    • Fix Self type substitution in bounds. This fixes some The trait bound is not satisfied false-positives

    • Process nested projections during normalization. Fixes type inference of Pin<&impl Future<...>> awaiting
  • Macro expansion improvements:
    • Fix ArrayIndexOutOfBoundsException during macro call arguments completion

    • Replace IntellijRustDollarCrate with a crate name in Show macro expansion action

    • Fix name resolution of $crate expanded from transitive dependencies

    • Don’t skip doc comments provided via macro definition

    • Fix groups substitution in macro expansion
  • Find and replace occurrences located outside a function in Introduce constant/variable refactoring (by @Kobzol)
  • Properly check spelling in lifetimes. Now 'static is not reported as a typo
  • Fix name resolution of private reexport with crate:: path
  • Include RUSTC in environment when executing Cargo (by @tamird)
  • Don’t show parameter hints for single-parameter closures. This hint can be returned back by disabling Show only smart hints in Preferences | Editor | Inlay Hints | Rust | Parameter hints
  • Fix stdlib source paths on nightly. This fixes Cargo project update failed error.
  • Don’t provide color highlighting while batch code inspection via Analyze | Inspect Code action and similar ones. It prevents empty items in Inspection Result tool window
  • Suppress snake_case naming lint for #[no_mangle] extern functions (by @Kobzol)
  • Fix navigation to derive items in 2020.2
  • Prefer trait methods before private inherent methods in completion (by @Kobzol)
  • Fix mod declarations with #[path = "mod.rs"] attribute
  • Attach module without a parent to a parent module in Attach file to module fix (by @Kobzol)
  • Use correct language name for TOML color settings configurable
  • Render inlay hint settings properly using standard layout

Internal Improvements

  • Allow triggering project GitHub workflows from UI
  • Enable GitHub actions to merge PRs
  • Get rid of PackageOrigin.TRANSITIVE_DEPENDENCY

Full set of changes can be found here