Visual Studio Code での Rust
Rust は強力なプログラミング言語で、パフォーマンスと正確性が重視されるシステムプログラミングによく使用されます。Rust を初めて使用し、詳細を知りたい場合は、オンライン書籍「The Rust Programming Language」から始めるのが最適です。このトピックでは、rust-analyzer 拡張機能を使用して Visual Studio Code 内で Rust をセットアップして使用する方法について詳しく説明します。

VS Code Marketplace には別の人気のある Rust 拡張機能 (拡張機能 ID: rust-lang.rust) もありますが、この拡張機能は非推奨であり、rust-lang.org では rust-analyzer が推奨される VS Code Rust 拡張機能です。
インストール
1. Rust のインストール
まず、マシンに Rust ツールセットをインストールする必要があります。Rust は、Windows、macOS、Linux でのインストールをサポートする rustup インストーラーを介してインストールされます。プラットフォームの rustup インストールガイドに従い、Rust プログラムのビルドと実行に必要な追加ツールをインストールするように注意してください。
マシンに新しいツールセットをインストールする場合と同様に、プラットフォームの PATH 変数で更新されたツールセットの場所を使用するために、ターミナル/コマンドプロンプトと VS Code のインスタンスを再起動する必要があります。
2. rust-analyzer 拡張機能のインストール
rust-analyzer 拡張機能は、VS Code 内から拡張機能ビュー (⇧⌘X (Windows、Linux Ctrl+Shift+X)) を使用して「rust-analyzer」を検索して見つけ、インストールできます。リリースバージョンをインストールする必要があります。

このトピックでは rust-analyzer の多くの機能について説明しますが、拡張機能のドキュメント https://rust-analyzer.github.io も参照できます。
インストールの確認
Rust をインストールした後、新しいターミナル/コマンドプロンプトを開き、次のように入力してすべてが正しくインストールされていることを確認できます。
rustc --version
これにより、Rust コンパイラのバージョンが出力されます。詳細が必要な場合は、--verbose 引数を追加できます。問題が発生した場合は、Rust のインストールガイドを参照できます。
Rust のインストールは、次を実行することで最新バージョンに保つことができます。
rustup update
Rust の新しい安定版は 6 週間ごとに公開されるため、これは良い習慣です。
ローカルの Rust ドキュメント
Rust をインストールすると、完全な Rust ドキュメントセットもマシンにローカルにインストールされ、rustup doc と入力して確認できます。Rust ドキュメントには、The Rust Programming Language および The Cargo Book が含まれており、ローカルブラウザーで開くので、オフラインでも Rust の学習を続けることができます。
Hello World
Cargo
rustup を使用して Rust をインストールすると、ツールセットには rustc コンパイラ、rustfmt ソースコードフォーマッター、および clippy Rust リンターが含まれます。また、Rust の依存関係をダウンロードし、Rust プログラムをビルドおよび実行するのに役立つ Rust パッケージマネージャーである Cargo も入手できます。Rust を扱う際には、ほとんどすべてのことで cargo を使用することになるでしょう。
Cargo new
最初の Rust プログラムを作成する良い方法は、Cargo を使用して cargo new と入力して新しいプロジェクトをスキャフォールドすることです。これにより、デフォルトの Cargo.toml 依存関係ファイルとともに、簡単な Hello World プログラムが作成されます。cargo new にプロジェクトを作成するフォルダーを渡します。
Hello World を作成しましょう。プロジェクトを作成したいフォルダーに移動し、次のように入力します。
cargo new hello_world
新しいプロジェクトを VS Code で開くには、新しいフォルダーに移動し、code . で VS Code を起動します。
cd hello_world
code .
作者であるため、新しいフォルダーのワークスペースの信頼を有効にします。親フォルダー「my_projects」内のすべてのファイルの作成者を信頼するオプションをオンにすることで、新しいプロジェクトを作成するときにプロンプトが表示されないように、プロジェクトフォルダーの親全体に対してワークスペースの信頼を有効にできます。
cargo new は、main.rs ソースコードファイルと Cargo.toml Cargo マニフェストファイルを含む単純な Hello World プロジェクトを作成します。
src\
main.rs
.gitignore
Cargo.toml
main.rs にはプログラムのエントリ関数 main() があり、println! を使用してコンソールに「Hello, world!」と出力します。
fn main() {
println!("Hello, world!");
}
この単純な Hello World プログラムには依存関係はありませんが、[dependencies] の下に Rust パッケージ (クレート) の参照を追加します。
Cargo build
Cargo は Rust プロジェクトをビルドするために使用できます。新しい VS Code 統合ターミナル (⌃⇧` (Windows、Linux Ctrl+Shift+`)) を開き、cargo build と入力します。
cargo build

これで、ビルド出力を含む target\debug フォルダーが作成され、hello_world.exe という実行可能ファイルが含まれます。
Hello World の実行
Cargo は、cargo run を介して Rust プロジェクトを実行するためにも使用できます。
cargo run
また、ターミナルで .\target\debug\hello_world と入力して、手動で hello_world.exe を実行することもできます。

IntelliSense
IntelliSense 機能は Rust 言語サーバーである rust-analyzer によって提供され、詳細なコード情報とスマートな提案を提供します。
初めて Rust プロジェクトを開くと、ステータスバーの左下で rust-analyzer の進行状況を確認できます。言語サーバーのすべての機能を最大限に活用するには、rust-analyzer がプロジェクトを完全にレビューするまで待つ必要があります。

インレイヒント
最初に気づくことの 1 つは、rust-analyzer がインレイヒントを提供して、推論された型、戻り値、名前付きパラメーターをエディターで薄いテキストで表示することです。

インレイヒントはコードの理解に役立ちますが、エディター > インレイヒント: 有効設定 (editor.inlayHints.enabled) を介して機能を構成することもできます。
ホバー情報
変数、関数、型、またはキーワードにカーソルを合わせると、その項目に関するドキュメント、シグネチャなどの情報が表示されます。また、独自のコードまたは標準の Rust ライブラリで型の定義にジャンプすることもできます。

オートコンプリート
Rust ファイルに入力すると、IntelliSense が提案された補完とパラメーターヒントを提供します。

⌃Space (Windows、Linux Ctrl+Space) を使用して、手動で提案をトリガーします。
セマンティックシンタックスハイライト
rust-analyzer は、プロジェクトのソースコードを豊富に理解しているため、セマンティック構文ハイライトとスタイル設定を使用できます。たとえば、ミュータブル変数がエディターで下線が引かれていることに気づいたかもしれません。

どの Rust 変数がミュータブルであるかをすばやく判別できることは、ソースコードの理解に役立ちますが、ユーザーの設定で VS Code の editor.semanticTokenColorCustomizations 設定でスタイルを変更することもできます。
settings.json には、次を追加します。
{
"editor.semanticTokenColorCustomizations": {
"rules": {
"*.mutable": {
"fontStyle": "", // set to empty string to disable underline, which is the default
},
}
},
}
rust-analyzer のセマンティック構文のカスタマイズについては、rust-analyzer ドキュメントのエディター機能セクションで詳しく学ぶことができます。
コード ナビゲーション
コードナビゲーション機能は、エディターのコンテキストメニューから利用できます。
- 定義へ移動 F12 - 型定義のソースコードに移動します。
- 定義を Peek ⌥F12 (Windows Alt+F12、Linux Ctrl+Shift+F10) - 型定義を含む Peek ウィンドウを表示します。
- 参照へ移動 ⇧F12 (Windows、Linux Shift+F12) - 型のすべての参照を表示します。
- 呼び出し階層を表示 ⇧⌥H (Windows、Linux Shift+Alt+H) - 関数からのまたは関数へのすべての呼び出しを表示します。
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) の シンボルに移動 コマンドを使用して、シンボル検索でナビゲートできます。
- ファイル内のシンボルへ移動 - ⇧⌘O (Windows、Linux Ctrl+Shift+O)
- ワークスペース内のシンボルへ移動 - ⌘T (Windows、Linux Ctrl+T)
Linting
Rust ツールセットには、rustc および clippy によって提供されるリンティングが含まれており、ソースコードの問題を検出します。

デフォルトで有効になっている rustc リンターは基本的な Rust エラーを検出しますが、clippy を使用してより多くのリンティングを行うことができます。rust-analyzer で clippy 統合を有効にするには、Rust-analyzer > Check: Command (rust-analyzer.check.command) 設定をデフォルトの check から clippy に変更します。これにより、ファイルを保存したときに rust-analyzer 拡張機能が cargo clippy を実行し、clippy の警告とエラーをエディターと問題ビューに直接表示します。
クイックフィックス
リンターがソースコードでエラーや警告を見つけると、rust-analyzer はしばしば提案されたクイックフィックス (コードアクションとも呼ばれます) を提供できます。これらはエディターの電球ホバーから利用できます。⌘. (Windows、Linux Ctrl+.) を使用して、利用可能なクイックフィックスをすばやく開くことができます。
さらに、コードアクションウィジェット: 近くのクイック修正を含める (editor.codeActionWidget.includeNearbyQuickFixes) はデフォルトで有効になっている設定であり、カーソルがその行のどこにあっても、⌘. (Windows、Linux Ctrl+.) (コマンド ID editor.action.quickFix) からその行の最も近いクイック修正をアクティブにします。
このコマンドは、クイックフィックスでリファクタリングまたは修正されるソースコードをハイライト表示します。通常のコードアクションと修正以外のリファクタリングは、カーソル位置で引き続きアクティブ化できます。

リファクタリング
rust-analyzer はソースコードのセマンティックな理解により、Rust ファイル全体でスマートな名前変更も提供できます。カーソルを変数に合わせ、コンテキストメニュー、コマンドパレット、または F2 を使用してシンボルの名前を変更を選択します。
rust-analyzer 拡張機能は、拡張機能がアシストと呼ぶ他のコードリファクタリングとコード生成もサポートしています。
利用可能なリファクタリングの一部を以下に示します。
- if 文をガード付きリターンに変換
- インライン変数
- 関数を抽出
- 戻り値の型を追加
- インポートを追加
フォーマット
Rust ツールセットには、ソースコードを Rust 規約に準拠させるようにフォーマットできるフォーマッター rustfmt が含まれています。⇧⌥F (Windows Shift+Alt+F、Linux Ctrl+Shift+I) を使用するか、コマンドパレットまたはエディターのコンテキストメニューからドキュメントのフォーマットコマンドを実行することで、Rust ファイルをフォーマットできます。
作業中に Rust コードを自動的に適切にフォーマットするために、保存時 (エディター: 保存時にフォーマット) または貼り付け時 (貼り付け時にフォーマット) にフォーマッターを実行するオプションもあります。
デバッグ
rust-analyzer 拡張機能は、VS Code 内からの Rust のデバッグをサポートしています。
デバッグサポートのインストール
デバッグを開始するには、まずデバッグサポート付きの言語拡張機能のいずれかをインストールする必要があります。
- Microsoft C++ (ms-vscode.cpptools) – Windows の場合
- CodeLLDB (vadimcn.vscode-lldb) – macOS/Linux の場合
これらの拡張機能のいずれかをインストールし忘れた場合、デバッグセッションを開始しようとすると、rust-analyzer が VS Code Marketplace へのリンクを含む通知を提供します。

Rust Analyzer の使用: デバッグ
rust-analyzer 拡張機能には、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) とエディターの実行|デバッグ CodeLens で利用できるRust Analyzer: Debugコマンドを介した基本的なデバッグサポートがあります。
以前に作成した Hello World プログラムをデバッグしましょう。まず、main.rs にブレークポイントを設定します。
-
デバッグ: あらゆる場所でブレークポイントを許可設定を有効にする必要があります。これは、設定エディター (⌘, (Windows、Linux Ctrl+,)) で「everywhere」を検索することで見つけることができます。

-
main.rsを開き、エディターの左ガターをクリックして、println!行にブレークポイントを設定します。赤い点として表示されるはずです。
-
デバッグを開始するには、Rust Analyzer: Debug コマンドを使用するか、
main()の上のデバッグ CodeLens を選択します。
次のステップ
これは、VS Code 内の rust-analyzer 拡張機能の機能を示す簡単な概要でした。詳細については、特定のVS Code エディター構成の調整方法など、Rust Analyzer 拡張機能のユーザーマニュアルに記載されている詳細を参照してください。
rust-analyzer 拡張機能の最新の機能/バグ修正については、CHANGELOG を参照してください。また、拡張機能ビューのインストールドロップダウンで rust-analyzer プレリリースバージョンをインストールして、新しい機能や修正を試すこともできます。
問題や機能リクエストがある場合は、rust-analyzer 拡張機能のGitHub リポジトリにログを記録してください。
VS Code についてさらに詳しく知りたい場合は、以下のトピックを試してください
- 基本的な編集 - VS Code エディターの基本事項を簡単に紹介します。
- 拡張機能をインストールする - マーケットプレイスで利用可能な他の拡張機能について学びます。
- コード ナビゲーション - ソースコード内をすばやく移動します。
よくある質問
リンカーエラー
Rust プログラムをビルドしようとしたときに「エラー: リンカー link.exe が見つかりません」のようなリンカーエラーが表示される場合は、必要な C/C++ ツールセットが不足している可能性があります。プラットフォームによっては、Rust コンパイラの出力を結合するために C/C++ リンカーを含むツールセットをインストールする必要があります。
Windows
Windows では、C/C++ リンカー link.exe を取得するためにMicrosoft C++ Build Toolsもインストールする必要があります。Visual Studio インストーラーを実行するときは、必ずC++ によるデスクトップ開発を選択してください。
Visual Studio Build Tools の C++ ツールセットと Visual Studio Code を使用して、有効な Visual Studio ライセンス (Community、Pro、または Enterprise のいずれか) があれば、任意のコードベースをコンパイル、ビルド、検証できます。
macOS
ターミナルで xcode-select --install を実行して XCode ツールセットをインストールする必要がある場合があります。
Linux
ターミナルで sudo apt-get install build-essential を実行して、build-essential パッケージを介して GCC ツールセットをインストールする必要がある場合があります。
さらなるトラブルシューティングのアドバイスについては、Rust のインストールガイドを参照してください。