Visual Studio Code における Rust

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

Rust extension banner

注意

VS Code マーケットプレイスにはもう 1 つの人気のある Rust 拡張機能(拡張機能 ID: rust-lang.rust)もありますが、この拡張機能は非推奨であり、rust-lang.orgによって推奨されている VS Code 用の Rust 拡張機能は rust-analyzer です。

インストール

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」と検索して見つけ、インストールできます。Release Version(リリース バージョン)をインストールする必要があります。

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 を使用して 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

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

インレイヒントはコードを理解するのに役立ちますが、エディター > Inlay Hints: Enabled 設定( editor.inlayHints.enabled Open in VS Code Open in VS Code Insiders )から構成することもできます。

ホバー情報

任意の変数、関数、型、またはキーワードにホバーすると、ドキュメントやシグネチャなどのその項目に関する情報が表示されます。また、独自のコードまたは標準の 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 Open in VS Code Open in VS Code Insiders 設定を使用してスタイルを変更することもできます。

settings.json に、以下を追加します。

{
  "editor.semanticTokenColorCustomizations": {
    "rules": {
      "*.mutable": {
        "fontStyle": "", // set to empty string to disable underline, which is the default
      },
    }
  },
}

rust-analyzer のセマンティック構文のカスタマイズに関する詳細は、rust-analyzer ドキュメントのEditor featuresセクションで確認できます。

コード ナビゲーション

コードナビゲーション機能は、エディターのコンテキストメニューから利用できます。

  • 定義へ移動 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 を使用するとより多くの警告(Lint)を取得できます。rust-analyzer で clippy 連携を有効にするには、Rust-analyzer > Check: Commandrust-analyzer.check.command)設定を、デフォルトの check ではなく clippy に変更します。これで、ファイルを保存したときに rust-analyzer 拡張機能が cargo clippy を実行し、clippy の警告やエラーをエディターや「問題」ビューに直接表示するようになります。

クイックフィックス

リンターがソースコードのエラーや警告を検出すると、rust-analyzer はクイックフィックス(コードアクションとも呼ばれます)を提案することが多く、これらはエディター内の電球アイコンのホバーから利用できます。利用可能なクイックフィックスは、⌘.(Windows、Linuxは Ctrl+. を使用してすばやく開くことができます。

さらに、コードアクションウィジェット: 近隣のクイックフィックスを含める ( ... ) 設定はデフォルトで有効になっており、カーソルの位置に関係なく、⌘. (Windows, Linux Ctrl+.) (コマンド ID editor.action.quickFix) からその行の最も近いクイックフィックスをアクティブにします。

このコマンドは、リファクタリングまたはクイック修正で修正されるソースコードを強調表示します。通常のコードアクションおよび非修正リファクタリングは、カーソル位置で引き続きアクティブにできます。

Quick Fixes for greeting unused boolean variable

リファクタリング

rust-analyzer はソースコードをセマンティックに理解しているため、複数の Rust ファイルにわたってスマートな名前変更を行うこともできます。変数にカーソルを合わせた状態で、コンテキストメニュー、コマンドパレット、または F2 を使用して、Rename Symbol(シンボルの変更)を選択します。

rust-analyzer 拡張機能は、拡張機能が Assists(アシスト)と呼ぶ、その他のコードリファクタリングやコード生成もサポートしています。

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

  • if文をガード節(早期リターン)に変換する
  • 変数のインライン化
  • 関数の抽出
  • 戻り値の型の追加
  • インポートの追加

フォーマット

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

また、保存ごと(Editor: Format On Save)または貼り付けごと(Format On Paste)にフォーマッタを実行するオプションもあり、作業中に Rust コードが自動的に正しくフォーマットされた状態を維持できます。

デバッグ

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

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

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

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

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

rust-analyzer notification to install a debugging extension

Rust Analyzer: Debug の使用

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

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

  1. 設定エディター(⌘,(Windows、Linuxは Ctrl+,)で「everywhere」を検索して、設定 Debug: Allow Breakpoints 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() の上の Debug CodeLens を選択します。

    Debug session stopped at breakpoint

次のステップ

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

rust-analyzer 拡張機能の最新機能やバグ修正について常に最新の状態を保つには、CHANGELOG を参照してください。また、「拡張機能」ビューの「インストール」ドロップダウンから利用可能な、rust-analyzer の Pre-Release Version(プレリリース バージョン)をインストールすることで、新しい機能や修正を試すこともできます。

問題や機能リクエストがある場合は、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 Code とともに Visual Studio Build Tools の C++ ツールセットを使用して、任意のコードベースをコンパイル、ビルド、および検証できます。

macOS

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

Linux

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

トラブルシューティングに関する詳細なアドバイスについては、Rustインストールガイドを参照してください。

© . This site is unofficial and not affiliated with Microsoft.