Most of the new features in the release have been added by third-party contributors. Many thanks to @Kobzol for the extraordinary amount of contributions!

You can participate too! Join our open source development on Github.

New Features

  • Inlay hints improvements:
    • #5276, #5361 New inlay hints for chained method calls (by @Kobzol)

      chained method calls screenshot

    • #5197 Show type hints for type placeholders _ (by @avrong)

      type hints for type placeholders screenshot

    • #5195 Support blacklisting for inlay parameter hints. You can find these settings in Settings | Editor | Inlay Hints | Rust | Parameter hints | Blacklist... (by @Kobzol)


    If you don’t like one of our new inlay hints, you can disable it in Settings | Editor | Inlay Hints | Rust.

  • Refactorings improvements:
    • #4985 Provide Introduce Constant refactoring. You can invoke it via Refactor | Extract | Constant or Ctrl+Alt+C (by @Kobzol)

    • #5304 Improve Extract Enum Variant refactoring. Now derive and repr attributes are copied from the parent enum to the generated struct (by @Kobzol)

    • #5291 Also, Extract Enum Variant is now available from Refactor | Extract and Refactor | Refactor This menus (by @Kobzol)

  • #4969 Highlight errors in format string literal in macros like println, write, format, etc. (by @Kobzol)

    errors in format string literal screenshot

  • #5308 Automatically insert missing <> when completing generic types (by @Kobzol)

  • #5336 Support include! macro calls generated by another macro call. Note, full support (name resolution and completion for code from including file in included one and correct module hierarchy recognition, i.e. absence of false positive “File is not included in module tree” editor notification), is available only when the new macro expansion engine is enabled (You can enable it in Settings | Languages & Frameworks | Rust | Expand Declarative macros).

  • #5270 Show value of NonZero* numbers in the debugger (by @Kobzol)

Performance Improvements

  • #5343, #5297 Slightly optimized macro name resolution and expansion

  • #5251 Fixes UI freezes during project save if the new macro expansion engine is enabled

  • #5205 Improved macro expansion task cancellation. Typing in Cargo.toml should be smoother. This affects you only if the new macro expansion engine is enabled.

Fixes

  • #5147 Take into account extern keyword by Implement members quick fix (by @t-kameyama)

  • #5335 Fix false-positive E0603 module is private if the module is declared multiple times (e.g. in lib.rs and main.rs)

  • Go To Super action (Ctrl+U) now allows choosing a module declaration (if multiple)

  • #5333 Fix #[cfg()] attributes support. Ignore impl’s from disabled submodules

  • #5320 Improve"complete current statement (Ctrl+Shift+Enter) action:
    • don’t add new line after ; completion
    • insert empty line on empty line
  • #5317 Implement Members and Generate Construct actions now take into account all trait bounds of trait object types

  • #5312 Omit unchanged default type parameters of parameters by Extract Function refactoring (by @Kobzol)

  • #5296 Fix Find Usages action:
    • take into account files added to the project by include!() macro
    • correctly find reference to pub(crate) items declared in crate root
  • #5293 Fix the issue with non-rust directory renaming. Previously, the plugin sometimes broke “Rename” refactoring applied to a directory in non-rust projects.

  • #5292 Fix the issue with Surround with unsafe block quick fix (by @Kobzol)

  • #5261 Properly do Invalidate caches & Restart action

  • #5155 Fix Use of moved value false-positive error

  • #5288 Do not throw the exception while building a project via Build action

  • #5345 Fix IndexNotReadyException while completion during indexing

  • #5342 Fix possible java.lang.AssertionError exception during indexing

  • #5341 Fetch cargo metadata even with compilation error. Previously, if org.rust.cargo.evaluate.build.scripts experimental feature was enabled and there was compilation error, fetching cargo workspace data failed

Internal Improvements

Full set of changes can be found here