New Features

  • #3618 Support code coverage for Rust. Implementation is based on grcov utility. If the utility is not installed on your machine, the plugin will suggest installing it. Note, it requires nightly toolchain to instrument code properly. Also, this feature doesn’t work in CLion for now (see the corresponding issue for more details).

  • #4108 Add intention to convert impl Trait to type parameter (by @rrevenantt)

  • #4022 Add Implicit trait objects are deprecated inspection that highlights trait objects declaration without explicit dyn keyword in edition 2018 (by @rrevenantt)

  • #4090 Add option to emulate the terminal while running Cargo Command run configuration. It may be useful with crates like color-backtrace that have different behavior when a process is run under TTY. The option is available only on Unix.

  • #4078 Take into account pub extern crate re-exports by Auto Import quick fix and out-of-scope item completion

  • #4134 Correctly parse trait aliases. Note, type inference and name resolution have not been implemented yet (by @lundibundi)

  • Add detection of the new compiler errors:
  • #4128 Add separate color for unions (by @fan-tom)

Fixes

  • Inspection fixes:
    • #4070 Provide Auto Import quick fix for associated items and method calls in UFCS form
    • #4120 Fix false positive E0081 error annotations when enum variant discriminant defined via constant expression. Also, evaluation of enum variant discriminant takes into account repr attribute
    • #4148 Do not produce E0618 error for structs that implement Fn* traits (by @mibac138)
    • #4046 Do not show false positive Use of moved value error annotation for slice destructing like let [a, b , c] = array;
    • #4047 Produce missing Use of moved value annotation for struct patterns
  • Performance improvements:
    • #4151 Fix IDE hang while rustfmt formatting on 2019.2
    • #4114 Fix an infinite recursion while type inference that led to IDE freeze sometimes
  • Type inference fixes:
    • #4162 Fix exception while type inference when project contains several packages
    • #4124 Don’t throw exception on unbounded inclusive range like a = ..=;
  • #4107 Fix LLDB and GDB formatters for HashMap and HashSet. They were broken because of the new implementation in stdlib since 1.36

  • #4160 Perform Move Line action correctly if line ended with comment

  • #3731 Correctly process doc tests results while test running

  • #4099 Expand macros properly if it produces new macro definition. It should support the new implementation of iterator macros in nightly stdlib. Note, it works only when an invocation of the new macro is at least on the same expansion step (or deeper) in term of macro expansion engine

  • #4119 Fold block doc comments (like /** */) properly

  • #4115 Fix Runner Run is not registered exception

  • #4122 Fix indexing exception when include macro invoked inside a function body

Internal Improvements

  • #4136 Extract performance tests and tests on real projects into a separate package

  • #4154 Improve MinRustcVersion annotation. Now it’s possible to define a minimal version of stdlib in inheritors of RsTestBase. Should be useful for checking new stdlib features