IntelliJ IDEA で Rust のコードを書く環境(2022年4月)
はじめに
Rust の学習をしようと思い、IntelliJ IDEA で Rust のコードを書く環境を整えたので紹介したいと思う。
Rust のコードを書くのに Visual Studio Code を利用する方も多いと思うが、現在の仕事で Android エンジニアとして Android Studio をメインで利用している私にとって JetBrains 社製の IDE はやはり扱いやすいし、将来的に Code With Me のような機能を利用してペアプログラミングするのもよいなと思っている。
同じ JetBrains 社製の IDE を使うならば、CLion の方が Rust プラグインと相性が良い(機能比較はここ)のであろうが、CLion は有償であるし、今は一旦、IntelliJ IDEA の Community 版を利用している状態。将来的には CLion の利用を検討したい。
手元のローカルマシン(Mac)に言語としての Rust の環境は構築済のものとする。私の場合は同僚が書いた下記の投稿を参考にしてローカル環境を構築した。
現在の私の環境は以下の通りである。
- macOS Big Sur 11.6.2
- Rust(rustc) 1.58.1
- Cargo 1.58.0
- Clippy 0.1.58
- rustfmt 1.4.38-stable
- IntelliJ IDEA 2021.3.3 (Community Edition)
- Plugins
- Rust 0.4.168.4555-213
- Toml 213.5744.224
- Rust Playground 2.1.4-stable
- Plugins
Rust プラグイン
IntelliJ IDEA は、そのままでは Rust を扱えないので Rust プラグイン を導入する(おおまかな機能については ここ を参照)。導入すると、各種のメニューに Rust に関する項目が追加され、Cargo のプロジェクト、Rust のコードを扱えるようになる。
詳しい説明は割愛するが、機能の詳細は プラグインのドキュメント や GitHub: intellij-rust/intellij-rust を参照されたし。
ここでは、やっておくとよい Clippy と rustfmt の設定について説明する。
Clippy の適用
Preferences
> Languages & Frameworks
> Rust
> External Linters
で、下図のように External tool
に Clippy
を選択し、また Run external linter …
をチェックする[1]。
そうすると、エディタでコードを書く際にリアルタイムに Clippy による解析が行なわれ、問題があればエディタ上で波線で表示されるようになる。
これにより早い段階でコードの間違いに気づくことができる。
rustfmt の適用
Preferences
> Languages & Frameworks
> Rust
> Rustfmt
で下図の2つをチェックする。
これによりファイルを保存する度に自動で rustfmt によるコード整形が行なわれるようになる。
Rust Playground プラグイン
前項の Rust プラグインに加え、Rust Playground プラグイン も導入しておくと便利なので紹介する。これを利用すると、IntelliJ の Scratch Files 上で Rust のコードスニペットをさっと動かして動作を試すことができる。
コードスニペットは Scratch Files として IntelliJ の共通領域に保存されるので、どのプロジェクトからも参照することができる。よく利用するコードをここに保存しておくとよさそう。
何かしらの crate を利用する場合でも、本来は Cargo プロジェクトへ組み込む必要があるが、上図のように //#
の後に利用する crate を指定するだけで即座にその crate を利用したコードを試すことができる。
おわりに
筆者もまだ Rust 歴が浅く、また IntelliJ IDEA を使いこなせている訳ではないので、今後、便利な機能やプラグインを見つけたら追記しようと思う。また、この投稿に間違った記述があればぜひ指摘して欲しい。
そのほか参考にさせて頂いた記事
-
もし CPU に負荷がかかり作業に支障がある場合は IntelliJ RustのExternal Lintersでファイル保存のたびに実行する方法がない の投稿の方法でファイル保存時に Clippy を動かすようにしてもよさそう。 ↩︎
Discussion