rust-analyzerとLSPで構築する快適なRust開発環境【設定・機能・トラブル対策】
LSP(Language Server Protocol)の役割とrust-analyzerの位置づけ LSP(Language Server Protocol)は、Microsoftが策定したエディタと言語解析エンジン間の通信規約です。JSON-RPC 2.0をベースとし、コード補完・定義ジャンプ・リネームといったIDE機能をエディタ側と言語側で分離しています。この仕組みにより、1つの言語サーバを複数のエディタから共有できます。 出典: Language Server Protocol 公式仕様によれば、2025年時点で約300の言語サーバと50のエディタがLSPに対応しています。 rust-analyzerは、Rust言語向けのLSP実装です。Rustの旧式言語サーバであったRLS(Rust Language Server)の後継として開発が進み、2022年2月にRustプロジェクト公式の傘下に入りました。GitHubリポジトリは16,000以上のスターを獲得しており、Ferrous Systemsを中心に活発な開発が続いています。 出典: rust-analyzer公式サイト rust-analyzerが備える機能の全体像 rust-analyzerは単なるコード補完ツールではなく、Rust開発に必要なIDE機能を幅広くカバーしています。以下に主要機能をカテゴリ別に整理します。 ナビゲーション系 機能 説明 ショートカット例(VSCode) Go to Definition 関数・構造体の定義元へジャンプ F12 Go to Implementation トレイト実装へジャンプ Ctrl+F12 Go to Type Definition 変数の型定義へジャンプ - Find All References 使用箇所を一覧表示 Shift+Alt+F12 Workspace Symbol ワークスペース全体のシンボル検索 Ctrl+T Parent Module / Child Modules モジュール階層の移動 - コード補完・編集支援 機能 説明 Auto Import 未インポートの型・関数を補完時に自動追加 Magic Completions ifやmatchの構文パターン補完 Rename プロジェクト全体でのリネーム(F2) Join Lines 複数行を1行に結合 Move Item 関数・構造体を上下に移動 On Typing Assists 入力中の自動フォーマット インレイ表示・ハイライト 機能 説明 Inlay Hints 推論された型やパラメータ名をエディタ上に表示 Hover ホバー時にドキュメントと型シグネチャを表示 Semantic Highlighting 構文解析だけでなく意味解析に基づいた色分け Highlight Related カーソル位置と関連する箇所をハイライト 解析・デバッグ支援 機能 説明 Expand Macro Recursively マクロ展開結果を確認 View Syntax Tree 構文木を可視化 View Crate Graph クレート依存関係をSVG表示 View Memory Layout 構造体のメモリレイアウトを確認 View HIR / MIR 中間表現を表示 各エディタへの導入手順 VS Codeの場合 VS Codeでは拡張機能マーケットプレイスから数クリックで導入できます。 ...