このプロジェクトについて
RustOwlは、Rust開発者向けのツールで、変数の所有権の移動とライフタイムを可視化し、デバッグと最適化を支援します。Rustのソースコードを保存すると解析が実行され、変数や関数呼び出しにカーソルを合わせると所有権とライフタイムの情報が表示されます。
可視化には色付きの下線が使われます。
- 緑:変数のライフタイム。実線は確実に生存(この地点に到達するすべての経路で初期化済みであることが証明可能)を意味し、波線は生存の可能性あり(一部の経路では初期化されているが、他の経路ではムーブ済み、ドロップ済み、または未初期化の可能性がある)を意味します。
- 青:不変借用。
- 紫:可変借用。
- オレンジ:値のムーブ/関数呼び出し。
- 赤:ライフタイムエラー。実際のライフタイムと期待されるライフタイムの不一致や、可変参照と共有参照の無効な重複など。
エディタ対応には、VS Code拡張(Vscodium向けにOpen VSXでも利用可能)、Neovimプラグイン、Emacsパッケージがあります。これらのエディタでは、変数や関数呼び出しの上にカーソルを移動して約2秒待つと可視化が実行されます。このプロジェクトは拡張プロトコルを備えたLSPサーバーを実装しているため、他のエディタでもその仕様に基づいてクライアントを構築できます。RustRover/IntelliJ IDEおよびSublime Text向けのサードパーティ統合も存在します。
インストール方法には、crates.io、Arch User Repository(rustowl-bin)、WinGetがあります。VS Code拡張は有効化されるとRustOwlを自動的にインストールします。NeovimとEmacsでは、LSPサーバーを手動でインストールする必要があります。セットアップ後、拡張はcargoワークスペース内の任意のRustプログラムを保存する際にRustOwlを実行します。最初の解析には時間がかかる場合がありますが、以降の実行ではコンパイルキャッシュを利用して解析時間を短縮します。
前提条件はcargo(rustup経由でインストール可能)と対応エディタです。このプロジェクトは、最新5バージョンのRustをベストエフォートでサポートすると述べています。既知の制限:VS Codeの装飾仕様により、gや括弧などの下に突き出る文字では下線が正しく表示されないことがあります。また、println!マクロが余分な出力を生成することがありますが、使い勝手に大きな影響はありません。ホスト型プレイグラウンドがplay.rustowl.rsで利用可能です。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.