New Features

  • #8755 Support let_chains (by @Kobzol)

  • #9105 Allow to run a specific documentation test all the ways you can run a usual test (by @Kobzol)

  • #9349 Decorate MSVC type names when rendering values in the debugger on Windows. Now the Rust type names containing MSVC-specific wrappers are rendered properly, e.g. tuple$<Foo, ref$<Bar>> is replaced by (Foo, &Bar). This feature can be disabled via the Decorate MSVC type names checkbox in the File | Settings | Build, Execution, Deployment | Debugger | Data Views | Rust settings

  • #7134 Add a quick-fix to generate missing trait member definitions in trait implementations (by @Sejsel)

  • Procedural macro support improvements:
    • #9615 Split org.rust.macros.proc experimental feature into sub-features:
      • org.rust.macros.proc.function-like enables function-like procedural macros expansion
      • org.rust.macros.proc.derive enables derive procedural macro expansion
      • org.rust.macros.proc.attr enables attribute procedural macro expansion
      • org.rust.macros.proc enables all the above

      It should help us to enable macro support gradually.

      Note, since the procedural macro support is still experimental, these features are disabled by default. You can turn them on via Help | Find Action | Experimental Features dialog

    • #9628 Enable the expansion of function-like procedural macros in the nightly builds. For more information, check the implementation PR and the corresponding tracking issue.

    • #9614 Fix the expansion of attribute and derive procedural macros inside functions

    • #9559 Fix duplicate completion for already imported attribute procedural macros

    • #9526 Insert brackets of the proper form ((), [] or {}, depending on the macro’s documentation) when completing procedural macro calls
  • #9650 Increase the minimal supported version of Rust to 1.56

  • #8916 Fix emulating terminal in output console in some cases


  • Type inference fixes:
    • #9598, #9639 Fix false-positive trait bound is not satisfied E0277 annotations. Infer types properly when there are trait bounds on the Self type

    • #9552 Properly infer type of custom macros that shadow built-in macros

    • #7450 Properly infer array size when it refers to a constant (by @Kobzol)

    • #9586 Infer const arguments in struct literal paths

    • #9620 Normalize associated type in impl item trait reference

    • #9631 Fix type inference in the case of normalizable associated type projections like <A as B>::C

  • #9637 Fix build script evaluation failure when the native helper binary was not found

  • #9627 Do not show line markers for tests in dependence crates

  • #9562 Fix Create module file quick-fix in 2022.3 EAPs

  • #9556 Temporary disable Insert imports on paste feature because it may be slow when copying large code fragments. The corresponding option is located in Preferences | Editor | General | Auto Import | Rust settings

  • #9550 Do not resolve and complete macros after :: when Rust edition 2018 or later is used

  • #9469 Fix randomly appearing false-positive Variable is never used annotation when the variable is only used in a macro call

  • #9170 Fix completion for raw identifiers inside use declarations (by @Stzx)

Full set of changes can be found here