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 #118

New Features

  • Parser improvements:
    • Parse incomplete reference types. Now a in fn foo(a: &) has some reference type
    • Process lifetime and type parameters in any order while parsing. Now the plugin can correctly parse fn foo<T, 'a>() {}, and provide error message about wrong order of parameters.
    • Unify plugin grammar rules for items inside blocks, extern blocks and impl blocks. Now you can write any item in any type of block without syntax errors, and the plugin highlights those of them that are not allowed in the particular block.
    • Optimize plugin parser and speed up the parsing phase up to 20%. From user side, it should decrease indexing time
  • Collapse field initialization in struct literal into shorthand form after rename if possible (by @t-kameyama)

  • Provide Generate Constructor action (Code | Generate) inside impl block (by @Kobzol)

  • Generate default values for constants by Implement Members quick fix instead of unimplemented!() (by @Kobzol)
  • Add Browse Console History action for Rust REPL. You can open Rust REPL console via Tools | Rust REPL action

Performance Improvements

  • Store macro expansion results produced by experimental macro expansion engine into compressed binary files. It should significantly decrease occupied disk space and slightly speed up macro expansion process because of less interaction with the filesystem. You can enable new experimental macro expansion engine via Preferences | Languages & Frameworks | Rust | Expand declarative macros option

Fixes

  • Disambiguate inherent/trait methods and associated items while type inference
  • Do not change associated functions while Convert to struct refactoring (by @Kobzol)
  • Provide missing versions for indexers. It should prevent sporadic errors in different subsystems after lexer/parser changes

Full set of changes can be found here