Visual Studio Code での Rust
Rust は強力なプログラミング言語であり、パフォーマンスと正確性が優先されるシステムプログラミングによく使用されます。Rust を初めて使用し、詳細を知りたい場合は、オンライン書籍の『The Rust Programming Language』から始めるのが最適です。このトピックでは、rust-analyzer 拡張機能を使用して、Visual Studio Code 内で Rust をセットアップして使用する方法について詳しく説明します。
注: VS Code Marketplace には、もう 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 拡張機能をインストールする
VS Code 内から拡張機能ビュー (⇧⌘X (Windows、Linux Ctrl+Shift+X)) を使用して rust-analyzer 拡張機能を見つけてインストールし、「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 リンターが含まれます。Rust パッケージマネージャーである Cargo も入手でき、Rust の依存関係のダウンロード、Rust プログラムのビルドと実行に役立ちます。Rust を使用する場合、ほとんどすべてに cargo
を使用することになるでしょう。
Cargo new
最初の Rust プログラムを作成する良い方法は、Cargo を使用して cargo new
と入力して新しいプロジェクトをスキャフォールディングすることです。これにより、シンプルな 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 プログラムには依存関係はありませんが、[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)
Lint 処理
Rust ツールセットには、ソースコードの問題を検出するための rustc と clippy によって提供される Lint 処理が含まれています。
既定で有効になっている rustc リンターは基本的な Rust エラーを検出しますが、clippy を使用してより多くの lint を取得できます。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 コードを適切に自動フォーマットするために、保存時 ([エディター: 保存時にフォーマット]) または貼り付け時 ([貼り付け時にフォーマット]) にフォーマッターを実行するオプションもあります。
デバッグ
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)) で使用可能な [Rust Analyzer: デバッグ] コマンドと、エディターの [実行|デバッグ] CodeLens を介して、基本的なデバッグサポートがあります。
以前に作成した Hello World プログラムをデバッグしてみましょう。最初に main.rs
にブレークポイントを設定します。
-
設定エディター (⌘, (Windows、Linux Ctrl+,)) で「everywhere」を検索して見つけることができる [デバッグ: すべての場所にブレークポイントを許可する] 設定を有効にする必要があります。
-
main.rs
を開き、エディターの左側のガターをクリックして、println!
行にブレークポイントを設定します。赤い点として表示されます。 -
デバッグを開始するには、[Rust Analyzer: デバッグ] コマンドを使用するか、
main()
に関する [デバッグ] CodeLens を選択します。
次のステップ
これは、VS Code 内の rust-analyzer 拡張機能の機能を示す簡単な概要でした。詳細については、特定の VS Code エディター構成の調整方法など、Rust Analyzer 拡張機能の ユーザーマニュアル に記載されている詳細を参照してください。
rust-analyzer 拡張機能の最新機能/バグ修正に関する最新情報を入手するには、変更ログを参照してください。拡張機能ビューの [インストール] ドロップダウンで使用可能な rust-analyzer プレリリースバージョンをインストールして、新機能と修正を試すこともできます。
問題や機能のリクエストがある場合は、rust-analyzer 拡張機能の GitHub リポジトリ に自由に記録してください。
VS Code の詳細については、次のトピックをお試しください。
- 基本的な編集 - VS Code エディターの基本の簡単な紹介。
- 拡張機能をインストールする - Marketplace で利用可能なその他の拡張機能について学習します。
- コードナビゲーション - ソースコードをすばやく移動します。
よくある質問
リンカーエラー
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 インストールガイドを参照してください。