New Features

  • 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 gif. 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).
  • Add intention to convert impl Trait to type parameter gif (by @rrevenantt)
  • Add Implicit trait objects are deprecated inspection that highlights trait objects declaration without explicit dyn keyword in edition 2018 gif (by @rrevenantt)
  • 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.
  • Take into account pub extern crate re-exports by Auto Import quick fix and out-of-scope item completion
  • Add separate color for unions (by @fan-tom)

Fixes

  • Inspection fixes:
    • Provide Auto Import quick fix for associated items and method calls in UFCS form
    • 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
    • Do not produce E0618 error for structs that implement Fn* traits (by @mibac138)
    • Do not show false positive Use of moved value error annotation for slice destructing like let [a, b , c] = array;
    • Produce missing Use of moved value annotation for struct patterns
  • Performance improvements:
    • Fix IDE hang while rustfmt formatting on 2019.2
    • Fix an infinite recursion while type inference that led to IDE freeze sometimes
  • Type inference fixes:
    • Fix exception while type inference when project contains several packages
    • Don’t throw exception on unbounded inclusive range like a = ..=;
  • Fix LLDB and GDB formatters for HashMap and HashSet. They were broken because of the new implementation in stdlib since 1.36
  • Perform Move Line action correctly if line ended with comment
  • Correctly process doc tests results while test running
  • 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
  • Fold block doc comments (like /** */) properly
  • Fix Runner Run is not registered exception
  • Fix indexing exception when include macro invoked inside a function body

Internal Improvements

  • Extract performance tests and tests on real projects into a separate package
  • 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