IntelliJ Rust

はじめてのCLion+IntelliJ Rust

2023 年 9 月 13 日更新:Rust 専用 IDE RustRover が発表されました(ブログ記事)。これは IntelliJ Rust を将来的に代替するものです。現在は EAP(アーリーアクセスプログラム)として無償で利用可能です(インストールは簡単に自動更新可能なToolbox Appの利用がお勧めです)。 2024 年中に有償のIDEおよびプラグインとして正式リリースが予定されています

こんにちは。JetBrains堀岡です。ご存知の通り、JetBrainsの製品は様々なプログラミング言語やテクノロジーをカバー(参考:jetbrains.dev)しており、日々様々な技術情報が英語でアップデートされています。営業的な記事を書くのはそろそろ飽きてきたので、私自身仕事で使ったことのの無い(遠い昔、ソフトウェアエンジニアでしたw)プログラミング言語(Kotlin、PHP、Ruby、Swift、Scala、Go、Rust)のコンテンツも学びながら増やしていけたらと考えております。そこで、今回(今後伸び代がありそうな)IntelliJ Rustについて紹介したいと思います。

clion_rust_banner2

IntelliJ Rustの歴史

現在JetBrainsの製品群の中でプログラミング言語Rust専用のIDEはありませんが、オープンソースのJetBrains IDE向けプラグインとしてIntelliJ Rustがあります。歴史を調べてみると以下が大きな節目のようです。

IntelliJ Rustの情報源

IntelliJ Rustには製品レベルのドキュメントはありませんが、以下から機能概要やリリース情報を知ることができます。

現時点でIntelliJ Rustと一番親和性の高いJetBrains IDEはCLionです(包括的なデバッガサポート等があるため)  [追記: 2020/4/27のリリース以降でCLion以外でのデバッガサポートが発表されています。ただし制約事項があるとのこと。詳細はCLionと他のJetBrains IDEの比較ページIntelliJ Rust blog]。そのため、現在JetBrainsの製品カテゴリ/マーケティング的にはIntelliJ Rust関連の情報(新機能や便利な使い方紹介)は、CLionの一部として以下の通り情報提供されています。

IntelliJ Rustの主な機能

IntelliJ IDEAやCLionの基本操作の多くが(同じキー操作で)IntelliJ Rustプラグインでサポートされています。機能一覧はIntelliJ Rust DocumentationのFeaturesに掲載されています。基本的な機能は一通り入っているようですが、まだまだWIP(Working In Progress: 開発中)のものも多いようでこれからさらなる発展が期待されます。

ここでは、クイックスタートの指示に従って、GitHub上のコードで試してみます。

今回試してみた環境は以下の通りです。

  • CLion 2018.3.4
  • IntelliJ Rust Plugin v0.2.94.2119-183
  • Rust 1.33.0
  • macOS 10.13.6
  • Xcode 10.1 (IntelliJ Rustのdebuggerが使用)
  • テスト用コード rustlings

インストール

  • CLionをお持ちでない方はこちらから30日試用版が利用可能です
  • IntelliJ Rustプラグイン
    • [Preference]-[Plugins] (またはShiftキー*2 でpluginsを検索)
    • Rustを検索し[Install]
Plugins

プロジェクトの選択と実行

[Open]を選択し、git clone済みのrustlingsコードが含まれるディレクトリを指定します。

Welcome_to_CLion

Rustプロジェクトとして正しく認識されているか確認するため、画面右[Cargo]を開きます。targetsのrustlingsをダブルクリックすると自動的にCargo runしてくれます。

rustlings____work_rust_rustlings__-_____src_main_rs

コード編集支援とナビゲーション

Code Completion/コード補完[Ctrl+Space/^Space]やQuick Documentation Look up/関数リファレンス参照[Ctrl+Q/^J]、Refactoring/各種リファクタリング、定義ジャンブ等はCLionのショートカットやアクションがそのまま使えるようです。

completion
rustlings____work_rust_rustlings__-_____src_main_rs_と_rustlings____work_rust_rustlings__-_____exercises_functions_functions2_rs_png

Inspection/静的解析の設定や実行、Show Intention Action/空気を読む による修正も(対応パターンはまだまだ限られているかもしれませんが)実行可能です。

Preferences_と_rustlings____work_rust_rustlings__-____rustup_toolchains_stable-x86_64-apple-darwin_lib_rustlib_src_rust_src_libstd_sync_mpsc_mod_rs

以下は戻り値と思われる式にセミコロンが付いているため、戻り値の型が合わない警告に対するShow Intention Actionによる修正例です(参考:Rustの関数の戻り値について)。

Intention

デバッグ

既に「プロジェクトの選択と実行」の箇所でCargo runを実行済みであれば、Run/Debug構成はできていると思いますので(なければこちらを参考にRun/Debug Configurationを設定してください)、あとはブレークポイントをセットして、虫のマークアイコンからDebugを開始することができます。

注意が必要なのは、現在デバッガ機能は(IntelliJ Rustという名前にもかかわらず)CLionとの組み合わせが一番充実しており簡単に利用できるということです。理由はRustのデバッグ機能は、LLDB/GDBを使用したネイティブコードに対するデバッグ機能が必要であるためです(IntelliJ IDEA Ultimateの場合別途プラグインが必要)。また(今回はmacOS環境で試していますが)Windows環境の場合、(2019年3月の時点では)MSVCではなくGNU Rust toolchainが必要であることに注意が必要です(参考 IntelliJ Rust Issueへのリンク)。

debug

おわりに

私にとっても「はじめてのCLion+IntelliJ Rust」ということで、簡単に紹介しました。これから試される方が「完全に理解できるよう」参考になっていれば幸いです。また、既に使い込んでいる方は、こんな便利機能がある等シェアいただけると嬉しいです。

IntelliJ Rustはまだまだ発展途上な雰囲気もありますが、ダウンロード数は着実に増えており、特にデバッガサポート以降、CLion+IntelliJ Rustの組み合わせで使われているケースが一番多いようです。また、CLionはC/C++以外にもRustを含む様々な言語をサポートしていますので、この機会に試してみたい方はCLion 30日トライアル版をご利用ください。一方、IntelliJ Rustのデバッガ以外の機能はIntelliJ IDEAを含むCLion以外のIDEで動作しますし、全て無料の環境で使ってみたい方はIntelliJ IDEA Community + IntelliJ Rustというオプションもあります。

本記事への提案や今後「こんな情報がほしい」等ありましたらフィードバックをお待ちしております。

image description