New Features

  • #6564 Provide initial support for function-like procedural macros. Now the plugin can expand such procedural macro calls; as a result, they automatically get some features already available for declarative macros: highlighting, name resolution, limited code completion, Show macro expansion intentions and others.
    Note, it’s only initial implementation, so it may work in unexpected way in some cases. The feature is disabled by default for now. To turn if on, you should enable org.rust.cargo.evaluate.build.scripts and org.rust.macros.proc experimental features. Don’t forget to reload project structure after enabling the corresponding features via Refresh Cargo Projects action on Cargo tool window.
    See tracking issue for more details and current status of procedural macros support

  • #6872 Find all possible impl blocks for a type alias regardless of the number of aliases defined for the corresponding type when new name resolution engine is enabled. Previously, the plugin processed impl blocks for a type alias only when the number of aliases for the corresponding type does not exceed the given threshold (10 by default). It should fix name resolution for crates that heavily use type aliases, e.g. nalgebra or winapi

  • #6933 Auto-indent line when typing Enter inside an array literal

  • #6901 TOML syntax highlighting is now available in Cargo.toml.orig files

  • #6941 Provide new plugin icon

Performance Improvements

  • #6917 Prevent a possible deadlock during project structure setup

  • #6899 Exclude more stdlib parts from indexing. Slightly speed up index process

Fixes

  • #6889 Properly process when cfg-enabled glob import is overridden by cfg-disabled named one with new name resolution engine

  • #6900 Fix cargo features state inference for renamed packages

  • #6897 Omit unchanged default type parameters of return type by Extract Function (Refactor | Extract Method or Ctrl+Alt+M) refactoring

  • #6894, #6892 Fix false-positive E0252 error annotations in some cases

  • #6891 Show proper console output on the client side when running a binary with Code With Me plugin (by @akozlova)

  • #6876 Do not expand invocations of builtin macros into {}

  • #6717 Take into account const generics by inspections that check generic parameters/arguments ordering. It fixes false positive Type arguments must be declared prior to const arguments error annotations

  • #6887 Don’t throw an exception on changing name of a local variable during indexing

Internal Improvements

  • #6930 Use 2021.1 platform as a default for development

  • #6876 Add initial infrastructure for builtin macro expansion

  • #6881 Simplify bit flags creation

Full set of changes can be found here