インストール - RustRover
概要
JetBrains RustRoverは、IntelliJプラットフォームをベースにしたRust専用の統合開発環境である。
RustRoverには、Cargo、デバッガ、Rustfmt、Clippy等の主要なRustツールチェーンとの統合機能が含まれており、Rust開発に必要な機能が最初から備わっている。
また、Web開発関連のプラグインも付属しているので、Webシステム開発も同じ環境で開発できる。
RustRoverのインストール
Jetbrains RustRoverの公式WebサイトからRustRoverをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf RustRover-<バージョン>.tar.gz
次に、デスクトップエントリファイルを作成する。
vi ~/.local/applications/JetBrains_RustRover.desktop
# ~/.local/applications/JetBrains_RustRover.desktopファイル
[Desktop Entry]
Type=Application
Name=RustRover <バージョン>
GenericName=RustRover
Comment=Develop with pleasure
Exec=/<RustRoverのインストールディレクトリ>/bin/rustrover.sh %F
Icon=/<RustRoverのインストールディレクトリ>/bin/rustrover.png
StartupWMClass=jetbrains-rustrover
Terminal=false
Categories=Development;IDE;
ウォッチハンドルの設定
VCS、ビルドツール、コードジェネレータ等による変更等、外部からファイルの変更を把握することが不可欠である。
そのため、IntelliJプラットフォームでは、そのような変更を監視するためのバックグラウンドプロセスを実行している。
この方法は各プラットフォームで異なり、Linuxにおいては、Inotify機能を使用している。
Inotify機能において、プロジェクト内の各ディレクトリにウォッチハンドルを設定する必要がある。
しかし、ウォッチハンドルの初期値は、プロジェクトによっては十分ではない可能性がある。
IntelliJプラットフォームでは、ウォッチハンドルの制限に達する場合、ディレクトリツリーの再帰的なスキャンに戻ってしまう。
この状況を防ぐためには、ウォッチの上限 (例: 512K) を増加させることを推奨する。
/etc/sysctl.confファイル または /etc/sysctl.d/ディレクトリに*.confファイル(例. idea.conf)に、以下の設定を追加する。
sudo vi /etc/sysctl.conf または sudo vi /etc/sysctl.d/idea.conf
# /etc/sysctl.confファイル または /etc/sysctl.d/idea.confファイル fs.inotify.max_user_watches = 1048576
上記の変更を適用する。
sudo sysctl -p --system
RustRoverを起動している場合は、RustRoverを再起動する。
現在の設定を確認する場合は、以下に示すコマンドを実行する。
sudo sysctl fs.inotify.max_user_watches
※注意
監視制限はユーザごとの設定である。
もし、同一ユーザでInotifyを使用している他のソフトウェアが動作している場合は、全てのソフトウェアのニーズに合うように制限値を高くする必要がある。
一部のLinuxディストリビューションでは、この設定を /usr/lib/sysctl.d ディレクトリ配下のファイルで構成する場合がある。
これらのディレクトリ内のファイルはファイル名の順序で読み込まれるため、/etc/sysctl.d/idea.conf を使用してシステム設定を上書きし、優先度の高い設定を適用できる。
RustRoverの起動
cd /<RustRoverのインストールディレクトリ>/bin ./rustrover
RustRoverの設定
行番号と空白文字の表示
[File] - [Settings] - [Editor] - [General] - [Appearance]を選択する。
[Show line numbers]チェックボックスと[Show whitespaces]チェックボックスにチェックを入力する。
Samba上にプロジェクトを置く場合
External file changes sync may be slowを表示させないために、
[File] - [Settings] - [Appearance & Behavior] - [Notifications]から[File Watcher Messages]を[No popup]にする。
Rustツールチェーンの設定
RustRoverでRust開発を行うには、Rustツールチェーンのインストールが必要である。
Rustのインストール
Rustをインストールするには、rustupを使用することを推奨する。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
インストール完了後、シェルを再起動するか、以下のコマンドを実行する。
source $HOME/.cargo/env
Rustのバージョンを確認する。
rustc --version cargo --version
RustRoverでのツールチェーン設定
[File] - [Settings] - [Languages & Frameworks] - [Rust]を選択する。
[Toolchain location]でrustupのパスを指定する。(通常は自動検出される)
標準ライブラリのソースコードを取得する。
rustup component add rust-src
エラー関連
Cargoプロジェクトのビルドエラー
Cargoのキャッシュが破損している場合、以下のコマンドでクリーンアップを実行する。
cargo clean
Rust Analyzerの問題
Rust Analyzerが正常に動作しない場合、以下に示す手順を試す。
- [File] - [Invalidate Caches...]を選択して、キャッシュをクリアする。
- RustRoverを再起動する。
ツールチェーンのバージョン指定
特定のRustバージョンを使用する場合、rust-toolchain.tomlファイルをプロジェクトルートに作成する。
# rust-toolchain.tomlファイル
[toolchain]
channel = "1.75.0"
components = ["rustfmt", "clippy"]
RustRoverの日本語化
RustRover 2024.1以降、日本語化プラグインで日本語にローカライズ可能である。
- JetBrainsの公式Webサイトから、Japanese Language Packプラグインをダウンロードする。
この時、zipファイルは解凍しないことに注意する。 - ダウンロードしたプラグインファイルを、<RustRoverのインストールディレクトリ>/pluginsディレクトリに配置する。
- RustRoverのメイン画面のメニューバーから、[Settings]または[Preferences] - [Plugins]を選択する。
- [Settings]画面の上側にある歯車ボタンから、[Install Plugin from Disk...]を選択する。
- 上記でダウンロードしたJapanese Language Packプラグインファイルを選択してインストールする。
- RustRoverを再起動して、正常にローカライズできたかどうかを確認する。
ビルドターゲットの設定
Rustでは、クロスコンパイルのためにターゲットトリプルを指定することができる。
利用可能なターゲットを確認する。
rustup target list
特定のターゲットをインストールする。
rustup target add x86_64-unknown-linux-gnu rustup target add x86_64-pc-windows-gnu
RustRoverでビルドターゲットを指定する手順を、以下に示す。
- [Run] - [Edit Configurations...]を選択する。
- 該当する実行構成を選択する。
- [Command]セクションの[Target]フィールドでターゲットトリプルを指定する。
- [Apply]ボタンを押下して設定を保存する。
または、プロジェクトの.cargo/config.tomlファイルでデフォルトターゲットを設定できる。
# .cargo/config.tomlファイル
[build]
target = "x86_64-unknown-linux-gnu"
外部コンソールの使用
RustRoverでは、出力コンソールを外部コンソールアプリケーションに変更することができる。
これにより、プログラムの実行時において、別ウインドウでコンソールが起動する。
なお、この設定はプロジェクトごとに個別に設定することが可能である。
- まず、プロジェクトの実行構成を開く。
- [Run]メニューバー - [Edit Configurations...]を選択する。
- または、ツールバーの[実行構成]プルダウンの横にある編集ボタンを選択する。
- 該当する実行構成を選択して、以下に示す設定を変更する。
- [Configuration]タブを開く。
- [Run in external console]チェックボックスにチェックを入力する。
- [Apply]ボタンを押下して設定を保存する。
この設定は、以下に示すような場合に有効である。
- std::io::stdin().read_line()等の入力待ちを使用する場合
- プログラムの実行結果をより見やすく表示する場合
- IDE内蔵のコンソールで文字化け等の問題が発生する場合
Cargoの設定
Cargo.tomlの編集
RustRoverは、Cargo.tomlファイルの編集時に、依存関係の自動補完とバージョン管理機能を提供する。
依存関係を追加する場合、以下のようにCargo.tomlファイルを編集する。
# Cargo.tomlファイル
[package]
name = "my_project"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1.0", features = ["derive"] }
tokio = { version = "1.35", features = ["full"] }
または、以下のコマンドで依存関係を追加できる。
cargo add serde --features derive cargo add tokio --features full
Cargoワークスペース
複数のクレートを含むワークスペースを作成する場合、ルートディレクトリにCargo.tomlファイルを作成する。
# Cargo.tomlファイル (ワークスペースルート)
[workspace]
members = [
"crate_a",
"crate_b",
]
[workspace.dependencies]
serde = "1.0"
RustRoverは、ワークスペース内のすべてのクレートを自動的に認識し、相互参照を提供する。
デバッグ設定
GDBまたはLLDBのインストール
Linuxでは、GDBまたはLLDBをインストールする必要がある。
# openSUSE/SLESの場合 sudo zypper install gdb # または、LLDBを使用する場合 sudo zypper install lldb
# RHEL/Fedoraの場合 sudo dnf install gdb # または、LLDBを使用する場合 sudo dnf install lldb
デバッガの設定
[File] - [Settings] - [Build, Execution, Deployment] - [Debugger]を選択する。
[Rust]セクションで、使用するデバッガ(GDBまたはLLDB)を選択する。
デバッグビルドを実行するには、以下の手順を実行する。
- ブレークポイントを設定する箇所で、行番号の左側をクリックする。
- [Run] - [Debug...]を選択するか、ツールバーのデバッグアイコンをクリックする。
- デバッガが起動し、ブレークポイントで停止する。
※注意
リリースビルドではデバッグ情報が削除されるため、デバッグにはデバッグビルドを使用すること。
テストの実行
RustRoverは、Rustの標準的なテストフレームワークと統合されている。
テストを実行する方法を、以下に示す。
- テスト関数の横に表示される実行アイコンをクリックする。
- または、[Run] - [Run...]から該当するテストを選択する。
- または、以下のキーボードショートカットを使用する。
- 個別のテストを実行: Ctrl+Shift+F10 (Linux/Windows)
- 最後のテストを再実行: Shift+F10 (Linux/Windows)
全てのテストを実行するには、以下のコマンドを使用する。
cargo test
特定のテストのみを実行するには、以下のようにする。
cargo test test_name
Rustfmtの設定
Rustfmtは、Rustコードの自動フォーマットツールである。
Rustfmtをインストールする。
rustup component add rustfmt
RustRoverでRustfmtを使用するには、以下の設定を行う。
- [File] - [Settings] - [Languages & Frameworks] - [Rust] - [Rustfmt]を選択する。
- [Run rustfmt on Save]チェックボックスにチェックを入力すると、ファイル保存時に自動フォーマットされる。
手動でフォーマットを実行するには、以下の手順を実行する。
- [Code] - [Reformat Code]を選択する。
- または、Ctrl+Alt+L (Linux/Windows)を押下する。
プロジェクトルートにrustfmt.tomlファイルを作成することで、フォーマット設定をカスタマイズできる。
# rustfmt.tomlファイル
max_width = 100
hard_tabs = false
tab_spaces = 4
newline_style = "Unix"
Clippyの設定
Clippyは、Rustコードの静的解析ツールであり、コードの品質向上に役立つ。
Clippyをインストールする。
rustup component add clippy
RustRoverでは、Clippyの警告がエディタ上にリアルタイムで表示される。
Clippyを手動で実行するには、以下のコマンドを使用する。
cargo clippy
全ての警告を修正候補付きで表示するには、以下のコマンドを使用する。
cargo clippy --fix
特定のClippy lintを無効にする場合、以下のようにコード内で指定できる。
#![allow(clippy::lint_name)]
// または、特定の関数やブロックに対して
#[allow(clippy::lint_name)]
fn my_function() {
// ...
}
マクロ展開の表示
RustRoverでは、マクロの展開結果を確認することができる。
マクロ展開を表示する手順を、以下に示す。
- マクロ呼び出しにカーソルを置く。
- [Tools] - [Rust] - [Show Macro Expansion]を選択する。
- または、Ctrl+Shift+M (Linux/Windows)を押下する。
展開結果が別ウィンドウに表示され、マクロがどのようにコードを生成するかを確認できる。
プロファイリング
RustRoverでは、Cargo Flamingoを使用してパフォーマンスプロファイリングが可能である。
Cargo Flamingoをインストールする。
cargo install flamegraph
プロファイリングを実行するには、以下のコマンドを使用する。
cargo flamegraph
生成されたフレームグラフ(flamegraph.svg)を、ブラウザで開いて確認する。
※注意
Linuxでは、perfツールへのアクセス権限が必要な場合がある。
その場合、以下のコマンドを実行する。
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
WebAssembly (WASM) サポート
RustRoverは、WebAssemblyターゲットへのコンパイルをサポートしている。
WASMターゲットをインストールする。
rustup target add wasm32-unknown-unknown
wasm-packをインストールする。
cargo install wasm-pack
WASMプロジェクトをビルドするには、以下のコマンドを使用する。
wasm-pack build --target web
RustRoverの実行構成で、ビルドターゲットとして[wasm32-unknown-unknown]を指定することもできる。