What’s New in RustRover 2024.2

The highlights of this version include support for frontend development and databases, as well as full line code completion.

Download

Free for non-commercial use. 30-day trial available.

Frontend development and database support

In response to your feedback, we’ve reimplemented support for web technologies and databases in RustRover.

Full line code completion for Rust

This release introduces full line code completion for the Rust language. This feature suggests entire lines of code using a deep learning model that runs locally without sending any data outside your IDE. The single-line gray text suggestions complete statements based on the context of the current file. Full line code completion is included in your RustRover subscription at no extra cost.

Ability to attach the debugger to running processes

You can now debug active applications without restarting them. This makes it easier to work on dynamic libraries or plugins in externally managed programs.

Various improvements for Cargo.toml

  • When you accept a completion suggestion for a property with a different type, the caret will remain in the same place.
  • A top-level property will now be bracketed with [] if its type is an object, and [[]] if its type is an array of objects.
  • In headers, if a property can be an array of a simple type or object, using a completion suggestion for it will not add double brackets.
  • Completion is available for lints.
  • A new check prevents declaring an array as an array of tables.

Cargo profile switcher

Now, when using run/debug configurations, a dedicated Cargo profile switcher allows you to specify the profile, so you no longer have to do so manually.

Better support for the ? operator

We significantly improved ? operator type-checking. The operator is now suggested by auto completion in a number of cases, including chained method calls. There is also a new inspection to highlight unwrap() calls that allow using ?.

Folder improvements

Module folders are now conveniently marked as packages in the Project view to help distinguish them from regular ones.

Also, dragging and dropping a file no longer triggers a Move dialog for the parent directory.

Proc_macro enhancements

Expanding macros from optional dependencies in a workspace

Cargo now compiles proc_macros and build scripts for all dependencies that are necessary for code analysis to function properly. Note that in rare cases you’ll need to disable features that explicitly conflict.

Quick-fixes for attributes

New quick-fixes now suggest adding the #[proc_macro], #[proc_macro_derive], and #[proc_macro_attribute] attributes to your pub fn in procedural macro crates.

Intention actions in function-like macro calls

Intention actions are now available for tokens with a single matching element in the macro expansion.

Completion for unresolved name references

If you create a usage of a function before declaring it, the IDE will now offer a completion suggestion with its name.

Miscellaneous

This update also introduces a ton of other improvements:

  • Running a test no longer rebuilds the project twice.
  • Inlay hints are now available in async method chains.
  • The IDE now wraps Option<...> type return values in Some() (E0308).
  • New warnings inform you about false negatives in the syntax of {variables:?} (E0277).
  • Highlighting has been improved for unresolved methods (E0599).
  • The IDE now alerts you if a return is unnecessary.
  • Converting an identifier using a fix suggested by the compiler now affects all relevant identifier usages.
  • The extern location for crate does not exist on sync error has been fixed.
  • The built-in formatter works significantly better, having received fixes for over 20 problems.
  • Support is available for the unstable postfix-match feature.
  • The value behind Option/Result is now displayed in the Threads & Variables view when debugging with Unix LLDB.
  • The support for format! macro arguments have been improved, and the IDE now highlights unresolved methods.

Japanese, Korean, and Chinese UI options

Chinese, Japanese, and Korean UI language packs are now included in the base IDE installation. You can switch the language via Settings | Appearance & Behavior | System Settings | Language and Region.

Language-aware sticky lines

You can now choose the languages you want sticky lines to appear for. You can customize this feature either in Settings | Editor | General | Sticky Lines or through the context menu that appears when you right-click on a sticky line in the editor.

Preview option in Search Everywhere

The Search Everywhere dialog now includes an option to preview the codebase elements you’re searching for. Enabling this feature through the Preview icon on the dialog’s toolbar will cause a preview pane to appear under the search results, offering additional context and making it easier to navigate through your project.

AI Assistant

We're currently working on implementing Rust-specific integration with AI Assistant, but this is still in the early stages of development. Stay tuned for updates!

RustRover also inherited remote development and collaboration and version control systems features from the platform release.