New Features

  • #10648 Highlight Unresolved Reference error for type-independent paths

  • Completion improvements:

    • #10689 Complete chained iterator methods

    • #10647 Complete Cargo instructions in build scripts

    • #10651 Show the value of constants in the completion list

    • #10692 Provide fn keyword completion in the type context

    • #10691 Provide completion for fn main() { ... }

  • Improved error messages and provide new quick fixes:

    • #10684 When trying to use a prefix/postfix increment like i++

    • #10661 When incorrectly using impl or dyn in type parameters bounds

    • #10681 When trying to inherit one struct from another - a helpful reminder that Rust doesn’t support inheritance like struct Foo: Bar {}

  • #10664 Add a new inspection for when the entry point of the program is marked as async (E0752)

  • #10592 Add better support for the Path statements inspection and enable it by default

  • #10650 Add iter alias for for live template

  • #10436 Now the Trait objects must include the dyn keyword inspection raises an error in the 2021 edition, and a warning on 2018 (by @DeoTimeTheGithubUser)

Fixes

  • #10671 Fix bugs related to grammar error detection in Rust code using new API from Grazie plugin. Note, grammar error detection is disabled by default for now. You can enable it for Rust in Scope tab of Preferences | Editor | Natural Languages | Grammar and Style settings

  • Completion fixes:

    • #10679 Show completion auto-popup when literal suffix is typed

    • #10663 Don’t add new line by smart enter action after ; completion

    • #10682 Complete macro live template only in item context

    • #10680 Don’t complete integer suffixes for literals in scientific notation

    • #10674 Fix dependency keys completion when another key exists before

  • Macro expansion improvements:

    • #10678 Increase proc macro expansion timeout to 20 seconds

    • #10678 Improve error message in the case of too large macro expansion

    • #10675 Improve error message for a non-expanded macro inside an impl block

  • #10653 Use E0403 instead of deprecated E0263

  • #10676 Fix name resolution inside a nested block under a cfg attribute

  • #10645 Fix live templates suggestion in loop labels and other positions

  • #10669 Fix type inference in case of struct pattern matching

  • #10688 Match negative numeric literals with $l:literal macro fragment spec

  • #10428 Suggest Surround with unsafe block quick fix instead of Add unsafe to function for an unsafe call in some cases (e.g. inside a test function, main function, etc.) (by @DeoTimeTheGithubUser)

Internal Improvements

  • #10670 Implement initial support for GDB debugging outside CLion. Right now it’s disabled by default and works only on Linux

  • #10668, #10686 Extract hardcoded strings into a message bundle, allowing its future internationalization

Full set of changes can be found here