New Features

  • #8998 Support rename refactoring (Refactor | Rename or Shift+F6) for macro metavariables

  • #8850 Borrow checker inspection now detects more cases of move errors when a type overloads dereference operator. Among the new supported types are smart pointers (Box, Rc, etc.) and user-defined types implementing Deref trait

    More borrow checker annotations

  • #8972 Detect E0429 and E0431 compiler errors

Performance Improvements

  • #8985 Speed up completion and highlighting when typing in macro calls, thanks to fewer cache invalidations

  • #8981 Slightly speed up type inference

  • #8978 Do not invalidate caches of dependency crates on workspace code changes

  • #8977 Do not trigger the indexing mode when typing in non-recursive macro calls

Fixes

  • #8977 Show completion popup automatically when typing in macro calls. Now there is no need to press Ctrl + Space to invoke completion manually. Note, this change works only if the corresponding macro does not invoke other macros

  • #8979 Fix false-positive unresolved reference annotations in type-qualified paths to associate members, e.g. <S as module::Trait>::convert(S)

  • #8967 Properly resolve methods with specified self parameter type, e.g. self: Rc<Self>

  • Improvements of procedural macro expansion:

    • #8989 Fix error messages explaining why a procedural macro call has not been expanded

    • #8991 Fix deserialization of certain messages produced by procedural macro expander

    Note, procedural macro expansion is disabled by default for now. To turn it on, enable org.rust.cargo.evaluate.build.scripts and org.rust.macros.proc experimental features

Internal Improvements

  • Improvements in new project model reloading approach:

  • #8946 Add a registry flag to enable native Rust support in MSVC LLDB on Windows. Note, the implementation at this point is experimental and might cause LLDB crashes in certain cases

  • #8850 Implement type adjustments in the plugin’s type inference engine

  • #8705 Automatically suggest generated struct names after paste, based on their fields in JSON import (by @Kobzol)

Full set of changes can be found here