New Features

  • Provide initial debugger support outside of CLion. The current restrictions:
    • available since 2020.1
    • only Linux and macOS are supported for now
    • supported IDEs: IDEA Ultimate, AppCode and RubyMine
    • nativeDebug plugin is required for IDEA Ultimate
    • only LLDB
    • debugger binaries are not bundled and need to be downloaded

  • Add Extract enum variant intention. Now you can extract enum variant into a separate struct and replace all usages by one action (by @Kobzol)

  • Detect redundant else branch for irrefutable if-let patterns by new Redundant else inspection (by @Kobzol)
  • Automatically insert paired */ for block comment on enter if needed (by @Kobzol)
  • Do not show warning annotations about needless explicit lifetimes when there is allow(clippy::needless_lifetimes) attribute

Fixes

  • Rust REPL improvements:
    • Fix various bugs with incorrect output on Windows. It requires updating evcxr_repl binary to 0.5.1 version
    • Parse top-level statements like 1+2; properly
    • Use Ctrl+Enter as shortcut for executing instead of Enter. Now you can type multiline items easier
    • Don’t throw exception while executing command during indexing
  • Fix Specify type explicitly intention for ref pat bindings like let ref a = 123;
  • Do not show false positive Struct pattern does not mention field_name error annotation for unions (by @Stzx)
  • Now Add _ pattern and Add remaining patterns quick fixes insert , after last match arm if needed to produce valid code (by @Stzx)
  • Fix spacing after visibility in plugin Rust formatter for cases like pub &i32 field or pub (i32, i32) tuple.
  • Don’t remove empty lines by Extract function refactoring (by @t-kameyama)
  • Don’t remove curly braces after insertion of paired } for selected single path in use item
  • Fix exception while Cargo tool window initialization

Internal Improvements

  • Provide GitHub workflow for beta and stable releases

  • Dynamic plugin progress:

    • Get rid of some project/application components

    • Make all extension points of Rust plugin dynamic

Full set of changes can be found here