New Features

  • 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

  • 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
  • Auto-indent line when typing Enter inside an array literal
  • TOML syntax highlighting is now available in Cargo.toml.orig files
  • Provide new plugin icon

Performance Improvements

  • Prevent a possible deadlock during project structure setup
  • Exclude more stdlib parts from indexing. Slightly speed up index process

Fixes

  • Properly process when cfg-enabled glob import is overridden by cfg-disabled named one with new name resolution engine
  • Omit unchanged default type parameters of return type by Extract Function (Refactor | Extract Method or Ctrl+Alt+M) refactoring
  • Fix false-positive E0252 error annotations in some cases
  • Show proper console output on the client side when running a binary with Code With Me plugin (by @akozlova)
  • Do not expand invocations of builtin macros into {}
  • 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
  • Don’t throw an exception on changing name of a local variable during indexing

Internal Improvements

  • Use 2021.1 platform as a default for development
  • Add initial infrastructure for builtin macro expansion
  • Simplify bit flags creation

Full set of changes can be found here