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 は rustup インストーラーを介してインストールされ、Windows、macOS、Linux でのインストールをサポートしています。Rust プログラムのビルドと実行に必要な追加ツールをインストールするように注意しながら、プラットフォームの rustup インストール ガイダンスに従ってください。
マシンに新しいツールセットをインストールする場合と同様に、ターミナル/コマンド プロンプトおよび VS Code インスタンスを再起動して、プラットフォームの PATH 変数で更新されたツールセットの場所を使用するようにしてください。
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
と入力して確認できます。『The Rust Programming Language』や『The Cargo Book』を含む Rust ドキュメントは、ローカル ブラウザーで開かれるため、オフラインでも Rust の学習を続けることができます。
Hello World
Cargo
rustup で Rust をインストールすると、ツールセットには rustc コンパイラ、rustfmt ソースコード フォーマッター、clippy Rust リンターが含まれます。Cargo (Rust パッケージ マネージャー) も入手できます。これは、Rust の依存関係をダウンロードし、Rust プログラムをビルドして実行するのに役立ちます。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 - 型定義のソースコードに移動します。
- 定義をピーク表示 ⌥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 によって提供されるリンティングが含まれています。
デフォルトで有効になっている rustc リンターは基本的な Rust エラーを検出しますが、より多くのリンターを取得するために clippy を使用できます。rust-analyzer で clippy 統合を有効にするには、**Rust-analyzer > チェック: コマンド** (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 コードを自動的に適切にフォーマットするために、保存時 (Editor: Format On Save) または貼り付け時 (Format On Paste) にフォーマッターを実行するオプションもあります。
デバッグ
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 の使用: デバッグ
rust-analyzer 拡張機能は、コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) およびエディターの**実行 | デバッグ** CodeLens で利用できる**Rust Analyzer: デバッグ**コマンドを介して基本的なデバッグをサポートしています。
先ほど作成した Hello World プログラムをデバッグしてみましょう。まず、main.rs
にブレークポイントを設定します。
-
**デバッグ: すべての場所にブレークポイントを許可**設定を有効にする必要があります。この設定は、設定エディター (⌘, (Windows、Linux Ctrl+,)) で「everywhere」を検索することで見つけることができます。
-
main.rs
を開き、エディターの左側のガターをクリックして、println!
の行にブレークポイントを設定します。赤い点として表示されるはずです。 -
デバッグを開始するには、**Rust Analyzer: Debug** コマンドを使用するか、
main()
についての**Debug** 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++ ビルド ツールもインストールする必要があります。Visual Studio インストーラーを実行する際に、**C++ によるデスクトップ開発**を必ず選択してください。
有効な Visual Studio ライセンス (Community、Pro、または Enterprise のいずれか) をお持ちであれば、Visual Studio ビルド ツールからの C++ ツールセットを Visual Studio Code と共に使用して、任意のコードベースをコンパイル、ビルド、検証できます。
macOS
ターミナルで xcode-select --install
を実行して XCode ツールセットをインストールする必要がある場合があります。
Linux
ターミナルで sudo apt-get install build-essential
を実行して、build-essential
パッケージを介して GCC ツールセットをインストールする必要がある場合があります。
さらに詳しいトラブルシューティングのアドバイスについては、Rust のインストールガイドを参照してください。