VS Codeのエージェントモードを拡張するには、を試してください!

Visual Studio Code での Rust

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

Rust extension banner

VS Code Marketplaceには、他にも人気のあるRust拡張機能 (拡張機能 ID: rust-lang.rust) がありますが、この拡張機能は非推奨であり、rust-lang.org ではrust-analyzer が推奨される VS Code Rust 拡張機能です。

インストール

1. Rust をインストールする

まず、Rust ツールセットをマシンにインストールする必要があります。rustupインストーラーを介してRustをインストールします。これは、Windows、macOS、Linuxへのインストールをサポートしています。Rustプログラムをビルドおよび実行するために必要な追加ツールをインストールすることに注意しながら、お使いのプラットフォームのrustupインストールガイドに従ってください。

マシンに新しいツールセットをインストールする場合と同様に、プラットフォームのPATH変数で更新されたツールセットの場所を使用できるように、ターミナル/コマンドプロンプトとVS Codeインスタンスを再起動してください。

2. rust-analyzer 拡張機能をインストールする

VS Code内で拡張機能ビュー (⇧⌘X (Windows、Linux Ctrl+Shift+X)) から 'rust-analyzer' を検索して、rust-analyzer 拡張機能を見つけてインストールできます。リリースバージョンをインストールしてください。

rust-analyzer extension in the Extensions view

このトピックでは rust-analyzer の多くの機能について説明しますが、拡張機能のドキュメントはhttps://rust-analyzer.github.ioで参照することもできます。

インストールの確認

Rust をインストールした後、新しいターミナル/コマンドプロンプトを開き、以下を入力してすべてが正しくインストールされていることを確認できます。

rustc --version

これにより、Rust コンパイラのバージョンが出力されます。詳細については、--verbose 引数を追加できます。問題が発生した場合は、Rust のインストールガイドを参照してください。

Rust のインストールを最新バージョンに保つには、以下を実行します。

rustup update

Rust の新しい安定版は6週間ごとに公開されるため、これは良い習慣です。

ローカルの Rust ドキュメント

Rust をインストールすると、完全な Rust ドキュメントセットもローカルマシンにインストールされます。これは rustup doc と入力することで確認できます。The Rust Programming LanguageThe Cargo Bookを含む Rust ドキュメントは、ローカルブラウザで開き、オフラインでも Rust の学習を続けることができます。

Hello World

Cargo

rustup で Rust をインストールすると、ツールセットには rustc コンパイラ、rustfmt ソースコードフォーマッタ、clippy Rust リンターが含まれます。また、Rust の依存関係をダウンロードし、Rust プログラムをビルドおよび実行するのに役立つ Rust パッケージマネージャーであるCargoも入手できます。Rust を扱う際には、ほとんどすべての場面でcargoを使用することになるでしょう。

Cargo new

最初の Rust プログラムを作成する良い方法は、cargo new と入力して Cargo を使用し、新しいプロジェクトの骨組みを生成することです。これにより、シンプルな Hello World プログラムとデフォルトのCargo.toml依存関係ファイルが作成されます。プロジェクトを作成したいフォルダを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 プログラムには依存関係はありませんが、Rust パッケージ (クレート) の参照は[dependencies]の下に追加します。

Cargo build

Cargo を使用して Rust プロジェクトをビルドできます。新しい VS Code の統合ターミナル (⌃⇧` (Windows、Linux Ctrl+Shift+`)) を開き、cargo build と入力します。

cargo build

Cargo build output in the integrated terminal

これで、ビルド出力を含むtarget\debugフォルダが作成され、その中にhello_world.exeという実行可能ファイルが含まれます。

Hello World の実行

Cargo は、cargo run を介して Rust プロジェクトを実行するためにも使用できます。

cargo run

また、ターミナルで.\target\debug\hello_world と入力することで、hello_world.exe を手動で実行することもできます。

Manually running hello_world.exe output in the integrated terminal

IntelliSense

IntelliSense 機能は、詳細なコード情報とスマートな提案を提供する Rust 言語サーバーであるrust-analyzerによって提供されます。

初めて Rust プロジェクトを開くと、ステータスバーの左下で rust-analyzer の進行状況を確認できます。言語サーバーのすべての機能を利用するには、rust-analyzer がプロジェクトを完全にレビューし終えるまで待つ必要があります。

rust-analyzer in progress status in the VS Code Status bar

インレイヒント

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

Rust program with inlay hints displayed

インレイヒントはコードの理解に役立ちますが、Editor > Inlay Hints: Enabled 設定 (editor.inlayHints.enabled) を介してこの機能を構成することもできます。

ホバー情報

変数、関数、型、キーワードのいずれかにホバーすると、その項目に関するドキュメント、シグネチャなどの情報が表示されます。また、独自のコードまたは標準 Rust ライブラリの型定義にジャンプすることもできます。

Hover information for the Rust String type

オートコンプリート

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

Smart completion for Rust String member

ヒント

提案を手動でトリガーするには、⌃Space (Windows、Linux Ctrl+Space) を使用します。

セマンティックシンタックスハイライト

rust-analyzer は、プロジェクトのソースコードを豊富に理解しているため、セマンティック構文ハイライトとスタイリングを使用できます。たとえば、可変変数がエディターで下線で表示されていることに気づいたかもしれません。

Mutable variable underline in the editor

どの 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 - 型定義のソースコードに移動します。
  • 定義をピーク ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 型定義を含むピークウィンドウを表示します。
  • 参照へ移動 ⇧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 によって提供されるリンティングが含まれています。

linter warning about an unused variable

デフォルトで有効になっている 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) から最も近いクイックフィックスをアクティブにします。

このコマンドは、クイックフィックスでリファクタリングまたは修正されるソースコードをハイライト表示します。通常のコードアクションと修正以外のリファクタリングは、カーソル位置で引き続きアクティブ化できます。

Quick Fixes for greeting unused boolean variable

リファクタリング

rust-analyzer はソースコードをセマンティックに理解しているため、Rust ファイル全体でスマートな名前変更も提供できます。変数にカーソルを置いて、コンテキストメニュー、コマンドパレット、またはF2を介してシンボル名の変更を選択します。

rust-analyzer 拡張機能は、他のコードリファクタリングやコード生成もサポートしており、これらは拡張機能ではアシストと呼ばれています。

利用可能なリファクタリングのほんの一部を以下に示します。

  • if 文をガード付きリターンに変換
  • 変数のインライン化
  • 関数の抽出
  • 戻り値の型を追加
  • インポートを追加

フォーマット

Rust ツールセットには、ソースコードを Rust の規則に準拠するようにフォーマットできるフォーマッタrustfmtが含まれています。Rust ファイルは、⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) を使用するか、コマンドパレットまたはエディターのコンテキストメニューからドキュメントのフォーマットコマンドを実行することでフォーマットできます。

作業中に Rust コードが自動的に適切にフォーマットされるように、保存時 (エディター: 保存時のフォーマット) または貼り付け時 (貼り付け時のフォーマット) にフォーマッタを実行するオプションもあります。

デバッグ

rust-analyzer 拡張機能は、VS Code 内からの Rust のデバッグをサポートしています。

デバッグサポートのインストール

デバッグを開始するには、まずデバッグサポート付きの2つの言語拡張機能のいずれかをインストールする必要があります。

  • Microsoft C++ (ms-vscode.cpptools) – Windows の場合
  • CodeLLDB (vadimcn.vscode-lldb) – macOS/Linux の場合

これらの拡張機能のいずれかをインストールし忘れた場合、デバッグセッションを開始しようとすると、rust-analyzer が VS Code Marketplace へのリンクを含む通知を表示します。

rust-analyzer notification to install a debugging extension

Rust Analyzer の使用: デバッグ

rust-analyzer 拡張機能には、コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) で利用できるRust Analyzer: Debug コマンド、およびエディターの実行|デバッグ CodeLens を介した基本的なデバッグサポートがあります。

先ほど作成した Hello World プログラムをデバッグしましょう。まず、main.rs にブレークポイントを設定します。

  1. デバッグ: あらゆる場所でブレークポイントを許可という設定を有効にする必要があります。これは、設定エディター (⌘, (Windows、Linux Ctrl+,)) で 'everywhere' と検索することで見つけることができます。

    Debug: Allow Breakpoints Everywhere in the Settings editor

  2. main.rs を開き、エディターの左側のガターをクリックして、println! の行にブレークポイントを設定します。赤い点として表示されるはずです。

    Red breakpoint dot in the left gutter of the editor

  3. デバッグを開始するには、Rust Analyzer: Debug コマンドを使用するか、main() に関するデバッグ CodeLens を選択します。

    Debug session stopped at breakpoint

次のステップ

これは、VS Code 内での rust-analyzer 拡張機能の機能を示す簡単な概要でした。詳細については、特定のVS Code エディター構成を調整する方法など、Rust Analyzer 拡張機能のユーザーマニュアルに記載されている詳細を参照してください。

rust-analyzer 拡張機能の最新機能/バグ修正に関する最新情報を入手するには、変更履歴を参照してください。また、拡張機能ビューのインストールドロップダウンで利用可能な rust-analyzer のプレリリースバージョンをインストールすることで、新しい機能や修正を試すこともできます。

問題や機能リクエストがある場合は、rust-analyzer 拡張機能のGitHub リポジトリに自由にログを記録してください。

VS Code についてさらに詳しく知りたい場合は、以下のトピックを試してください

よくある質問

リンカーエラー

Rust プログラムをビルドしようとしたときに、「error: linker link.exe not found」などのリンカーエラーが表示される場合、必要な C/C++ ツールセットが不足している可能性があります。プラットフォームに応じて、Rust コンパイラの出力を結合するために C/C++ リンカーを含むツールセットをインストールする必要があります。

Windows

Windows では、C/C++ リンカーlink.exeを取得するためにMicrosoft C++ Build Toolsもインストールする必要があります。Visual Studio インストーラーを実行する際は、必ずC++ によるデスクトップ開発を選択してください。

有効な Visual Studio ライセンス (Community、Pro、または Enterprise のいずれか) をお持ちであれば、Visual Studio Build Tools の C++ ツールセットと Visual Studio Code を組み合わせて、任意のコードベースをコンパイル、ビルド、検証できます。

macOS

ターミナルでxcode-select --installを実行して、XCode ツールセットをインストールする必要がある場合があります。

Linux

ターミナルでsudo apt-get install build-essentialを実行して、build-essentialパッケージを介して GCC ツールセットをインストールする必要がある場合があります。

さらなるトラブルシューティングのヒントについては、Rust のインストールガイドを参照してください。