This an entry for several weeks!

New Features

  • Intentions to add/remove braces around single expression lambdas (by @zjhmale).
  • Reformat with rustfmt action. It is not bound to any key combination by default, you need to setup binding yourself, or use Ctrl+Shift+A (by @zjhmale).
  • Inspections for duplicate items in trait declarations (by @mbStavola).
  • De Morgan’s Laws intention (by @zjhmale).
  • Inspection for unsafe usage of CString (by @zjhmale). PSA: code like CString::new("hello").unwrap().as_ptr() is dangerously broken and memory unsafe, see documentation for explanation.
  • Support for unstable impl trait syntax.
  • Show rustup version in the settings (by @zjhmale).
  • Goto super action works for methods (by @atsky).

Fixes

  • Symbols from Rust prelude are correctly scoped.
  • Fix exponential time parsing of array expressions.
  • Don’t run several instances of Cargo concurrently. This could have caused Cargo to deadlock if there were git dependencies (also fixed in cargo).
  • Properly display multiline lookup strings in completion (by @zjhmale).
  • Properly refresh Cargo project when an implicit target like src/bin/foo.rs is added.
  • Make plugin buildable with OpenJDK (by @kumbayo).
  • Fix resolve of mod declarations with relative path in the path attribute (by @kumbayo).
  • Fix NPE when renaming a Rust file (by @zjhmale).

Refactorings

  • Stubs for use declaration, foreign modules and extern crate declarations.
  • RustQualifiedPath abstraction for PSI-independent paths.
  • Visitor-driven equality for types.
  • New implementation of ImplIndex.
  • AliasIndex.
  • Better interface for binary operators (by @mkaput).
  • Remove bodies from trait and impl PSI.