New Features

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

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

  • 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:
    • Support trait bounds for assoicated type parameters better
    • 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
  • Support raw identifiers better. Now they are correctly handled by Implement Members and Add missing fields quick fixes (by @Kobzol)
  • Fix gutter icons blinking in Cargo.toml while typing
  • Render type arguments of type aliases in inlay hints in proper way. Previously, the plugin shows type arguments from base type

Internal Improvements

  • Try to publish plugin nightly builds by GitHub workflow

  • Rust parser improvements:

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

Full set of changes can be found here