New Features

  • Improve support of cfg attributes:
    • #4990 Now cfg attributes are taken into account while name resolution of macros
    • #4992 Evaluate cfg attribute condition while looking for parent module. It should fix some unexpected error annotations like Module is private
  • REPL integration improvements:
    • #4881 Provide more actions for REPL console interaction like Stop Console, Toggle Soft Wrap, Toggle Scroll To End and Print Console Content
    • #4971 Suggest macros in completion list

    Note, you can open Rust REPL console via Tools | Rust REPL action

  • #3869 Provide basic highlighting of format string literal in macros like println, write, format, etc. Also, make some preliminary work to detect errors inside format macros in the future (by @rrevenantt)

    Format macros highlighting

Fixes

  • Improve name resolution and type inference:
    • #4961 Support trait bounds for assoicated type parameters better
    • #4953 Improve type inference for trait-relative paths with type parameters like Foo::<Bar>::baz
    • Take into account blanket impls (impl<T> for T) while looking for methods of trait objects
  • #4977, #4900 Support raw identifiers better. Now they are correctly handled by Implement Members and Add missing fields quick fixes (by @Kobzol)

  • #5004 Fix gutter icons blinking in Cargo.toml while typing

  • #4958 Render type arguments of type aliases in inlay hints in proper way. Previously, the plugin shows type arguments from base type

Internal Improvements

  • #5003 Try to publish plugin nightly builds by GitHub workflow

  • Rust parser improvements:

    • #4994 Improve syntax error messages
    • #4956 Parse default keyword after visibility. It should unify parser rules for items

Full set of changes can be found here