Visual Studio CodeでRust開発環境を整える

普段よく使っているエディタがマイクロソフトのVisual Studio Codeです。最近Rustの勉強を始めたので、Visual Studio Code上でRust環境を整えてみました。その際のセットアップ方法をまとめておこうと思います。Windows環境前提の記事です。

## 前提となる環境の情報
- Windows ver.1903
- Visual Studio Code 1.49.1
- Rust 1.46.0

# 1. セットアップ
Rustは既にインストール済みという前提でスタートします。
（難しい手順ではないですが、いちおうこちらに手順をまとめました→[Rustに入門してみた](https://qiita.com/84zume/items/3d7113325e7936ce78ae)）

今回導入するのは次の２つの拡張機能です。

|拡張機能|名前とリンク|用途|
|:-------|:--------|:-------|
|![image.png](https://rust-lang.gallerycdn.vsassets.io/extensions/rust-lang/rust/0.7.8/1589389254698/Microsoft.VisualStudio.Services.Icons.Default)|[Rust for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust)|コードの補完、フォーマット、リファクタリング、ナビゲーションなど、コーディングに必要な便利ツールが一通りそろっています。|
|![image.png](https://vadimcn.gallerycdn.vsassets.io/extensions/vadimcn/vscode-lldb/1.5.3/1591510551951/Microsoft.VisualStudio.Services.Icons.Default)|[CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)|LLDBとは次世代の高機能デバッガーです。この拡張機能を利用することにより、Visual Studio CodeでRustのデバッグ実行を実施することができます。|
|![image.png](https://bungcip.gallerycdn.vsassets.io/extensions/bungcip/better-toml/0.3.2/1518943844936/Microsoft.VisualStudio.Services.Icons.Default)|[Better TOML](https://marketplace.visualstudio.com/items?itemName=bungcip.better-toml)|設定ファイルでTOMLを扱うために、編集支援用に使う拡張機能です。|


拡張機能のインストールは特に難しいことはありません。Rust for Visual Studio Codeもインストールしちゃえば機能するので、説明は不要かと思います。CodeLLDBは設定があるので以下で補足します。

## CodeLLDBのセットアップ
順を追って説明します。

1. Rustのプログラムが格納されたフォルダをVisual Studio Codeで開く。
2. 左のサイドバーからデバッグ実行を選択する。
3. 「launch.jsonファイルを作成します。」をクリックし、設定ファイルである`launch.json` ファイルを作成する

![Inked1_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34410/e13871ba-c0ae-263c-9298-0d12462b7e0a.jpeg)

4. コマンドパレットが開くため、デバッガーとして、`LLDB` を選択する

![Inked2_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34410/2931f7a6-02a0-b174-0deb-9367f5043e32.jpeg)

5. 同じフォルダにある`Cargo.toml`に基づいて、`launch.json`が自動生成される。ダイアログは「Yes」をクリック。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34410/756ef13b-0d0b-1860-cd45-29665919e912.png)

6. これで設定完了！自動生成されたファイルは以下のイメージ。

```json:launch.json
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug executable 'hello'",
            "cargo": {
                "args": [
                    "build",
                    "--bin=hello",
                    "--package=hello"
                ],
                "filter": {
                    "name": "hello",
                    "kind": "bin"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "lldb",
            "request": "launch",
            "name": "Debug unit tests in executable 'hello'",
            "cargo": {
                "args": [
                    "test",
                    "--no-run",
                    "--bin=hello",
                    "--package=hello"
                ],
                "filter": {
                    "name": "hello",
                    "kind": "bin"
                }
            },
            "args": [],
            "cwd": "${workspaceFolder}"
        }
    ]
}
```

## デバッグ実行してみる
デバッグ実行している際の画面イメージは以下のとおりです。

- ブレークポイントで止められる
- 逐次実行できる
- ウォッチ式も定義できる
- コールスタックも丸わかり

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34410/2f9deaf1-252e-24ad-c589-c286e85b7afe.png)

いい感じですね。

# 2.おわりに
これだけあれば、あとはさくさくRustのお勉強を進められそうです。誰かの参考になれば。