IntelliJ Rust

Open-source Rust plugin for IntelliJ-based IDEs

Install

Stable builds

IntelliJ Rust is in active development, and we regularly publish new stable builds to the JetBrains plugin repository. You can download and install them directly from Settings / Preferences | Plugins | Marketplace in your IDE.

Nightly builds

In addition to stable releases, we also ship nightly snapshots of the intellij-rust development branch. To use the nightly channel, add a custom plugin repository and set the following URL:

https://plugins.jetbrains.com/plugins/nightly/8182

Compatible IDEs

The plugin is compatible with all Intellij-based IDEs like IDEA, CLion, or PyCharm. The latest plugin version supports the latest released platform version (for example, 2019.2).

Bug reports and feature requests

Please use our tracker. You can get there quickly right from the IDE: call Create New Issue on a selected piece of code, and you’ll jump to a pre-filled issue creating form.

Also feel free to ping us on Gitter.

×

Source

Intelligent Rust

editor features

IntelliJ Rust brings JetBrains-quality language support and full IDE experience to your Rust workflow.

Rust becomes native to IDEA, CLion, and other IntelliJ IDEs with smart coding assistance, seamless Cargo support, and built-in test runner.

In CLion, you get even more: fully-fledged debugger, CPU profiler, and Valgrind memcheck.

What's new

IntelliJ Rust Changelog #145

New Features

  • Add Unreachable code inspection and quick-fix to remove unreachable code

  • Add Unresolved reference inspection for Cargo.toml files. The inspection highlights unresolved references in TOML string literals and provides a quick-fix to create a new file for the corresponding unresolved path.

    Note, the plugin provides such references for local dependencies, build scripts, workspace paths, and Cargo features. The set of analyzed references can be extended by other plugins (by @Kobzol)

  • Basic support of resolving to multiple targets at module scope in new new name resolution engine
  • Annotate wrong order of const generic parameters without const_generics feature

    wrong order of generic arguments

Performance Improvements

  • Speedup a proc-macro expansion result serialization/deserialization in the macro expansion engine

Fixes

  • Improvements in crates local index:
    • Make dependencies completion in Cargo.toml more intuitive and faster when using crates local index. Note, this feature is disabled by default for now. To use it, enable org.rust.crates.local.index experimental feature

    • Fix loading crates local index on a nightly Rust toolchain

    • Fix unnecessary reload of crates local index after IDE restart
  • Don’t show separate nodes for stdlib dependencies when org.rust.cargo.fetch.actual.stdlib.metadata experimental feature is enabled
  • Don’t import default type parameters by Extract Function refactoring (Refactor | Extract | Method or Cmd + Alt + M)
  • Omit default type parameters in a Convert to type quick-fix text
  • Fix exception in Move refactoring (Refactor | Move or F6) when it was first cancelled and then invoked again
  • Fix type inference for array index operator in Rust 1.50
  • Fix unification with the never type ! in match arms
  • Fix name resolution of stdlib items with cfg attributes in some cases
  • Fix expansion of procedural macros with non-ASCII literals
  • Fix processing of break/continue expanded from a macro during control-flow analysis
  • Update LLDB/GDB pretty-printers to render HashMap/HashSet in Rust 1.52 or higher
  • Update GDB pretty-printers to render BTreeMap/BTreeSet in Rust 1.50 or higher
  • Improve parser recovery in function arguments

Internal Improvements

  • Now it’s possible to use stdlib API appeared in Kotlin 1.4

Full set of changes can be found here