【Rust】VSCodeでRustのIDE環境を作ってみる

# はじめに
これからRustプログラミングをやろうとしたときに、コマンドラインではなくて、よく使われているEclipseとVSCodeのどちらかで使ってみたいと考える人は多いかと思います。私もそのひとりです。
そこでどちらが環境構築が簡単で使いやすいかを比較しようと思います。
そのためここではVS Codeで環境構築をまず行ってみます。
２つのうち、どちらかをとても気に入っているのであれば、どちらかを選ぶといったことはないでしょうけど、そこまでツールに思い込みはないという方は参考にしてみてください。それは知ってるでしょを前提としないで丁寧に書いていきます。
とはいえ、ここではふたつを同じ条件で比較したいため、日本語化は行わないまま扱います。
気に入った場合は日本語拡張機能を入れてつかってください。

**　　　　　　　　インストール環境　Windows10**

Eclipseの投稿は以下です(20210814追記)
[【Rust】EclipseでRustのIDE環境を作ってみる](https://qiita.com/yannori/items/569f4c8825521f7c9fa8)
# 目次

1. [Step1　VSCodeをインストール](#Step1)
1. [Step2　Microsoft C++ Build Toolsをインストール](#Step2)
1. [Step3　Rustupをインストール](#Step3)
1. [Step4　VS CodeのRust拡張機能をインストール](#Step4)
1. [Step5　VS Codeのデバッグ拡張機能CodeLLDBをインストール](#Step5)
1. [参考文献](#ref)

目次は大まかな手順となります。どれもインストールされていないことを前提にしていますので、もともとインストールされているものがあれば手順をスキップして必要なところから進めてください。


<a id="#Step1"></a>
# Step1　VSCodeをインストール
VSCodeをダウンロードしてインストールします。
[Azure VSCode ダウンロード](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
![100.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/0ea48338-deae-fea7-afe5-2650a374bd2d.png)
Download now をクリックします。
Windows User Installer 64bit を選択。
UserとかSystemというのはインストールをユーザ、管理者のどの権限で行うかということです。どちらでも問題ないとは思いますが、複数のユーザがいると仮定して今回はユーザを選択しています。
![101.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/02b2acbc-12de-9454-c6c6-2958a25e9353.png)
ここではVSCodeUserSetup-x64-1.58.2.exeがダウンロードされます。そして以下のページが現われます。
動画ではVS Codeの使い方を簡単に教えてくれます。時間に余裕があるようでしたら見てください。
![102.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/13495ff9-ac4b-c78e-2c71-96f48d9defd7.png)
ダウロードされたファイルをダブルクリックするとインストールがはじまります。
設定はデフォルトのままでまず問題ありませんので、ここでは次々に進めてインストールします。

![103.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/90271eae-12ea-3956-5c5b-afdd52806830.png)

![104.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/944635f2-8b58-9d8c-5806-c9f089846d33.png)

![105.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/b395a9cc-7e9d-ee73-9edd-dd2294888d8f.png)

![106.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/cfaee12c-02b9-853f-7f23-afeee67243b7.png)


![107.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/3c88fc8b-da70-2624-e933-0e8304aab8fd.png)


![108.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/be076734-86a9-ed83-4d65-7c857f35e093.png)


![109.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/21de450c-2a3d-2313-63a6-d72870247bb5.png)
インストール完了後にVSCodeが立ち上がりますので、思ったように立ち上がるか確認します。
![110.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/b9024dc6-7031-ac4b-4eef-9c960915f4a7.png)
立ち上がれば次のステップへすすむために、一度閉じます。

<a id="#Step2"></a>
# Step2　Microsoft C++ Build Toolsをインストール
このツールはStep3でRustupをビルドするために必要なツールです。
[Azure Microsoft C++ Build Tools ダウンロード](https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/)

![111.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/e1adf955-9b73-b1b0-3515-84d8bf16c72b.png)

Build Tools のダウンロードをクリックするとダウンロードがはじまります。
vs_BuildTools.exeがダウンロードされます。このインストールファイルをダブルクリックしてインストールします。
インストールに際しては、インストールをしてもよいかどうかの確認をしてくるだけで、すぐに終了します。


<a id="#Step3"></a>
#Step3　Rustupをインストール
次にRustupをインストールします。
Rustupとは the Rust toolchain installerのことでRustのツールチェインし環境を提供してくれます。Rustもこれを推奨しています。

Rustのホームページに行きます(表示言語は選べます。ここでは日本語を選択しています。）
[Rust　ホームページ](https://www.rust-lang.org/ja/)
![112.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/00493246-3504-ecc1-dd3a-9e9a1e84d3af.png)
はじめるをクリックすると次の画面となります。

![113.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/a649a434-081d-8367-3987-13e3779f6c29.png)

RUSTUP-INIT.EXE(64-BIT)をダウンロードをクリックします。
rustup-init.exeがダウンロードされますのでそれをダブルクリックしてインストールをはじめます。

![114.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/77530535-12c3-206e-db4d-a4b6cee34553.png)

ここからはターミナルでのコマンドライン入力となります。
ここでdefault の１を入力してリターンをしますと次々にインストールが進みます。

![114-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/a26b1dff-fbaf-f82c-8238-8ae8969022b7.png)

これでRustupはインストールされました。

<a id="#Step4"></a>
# Step4　VS  CodeのRust拡張機能をインストール
次にRustの拡張機能をVSCodeにインストールします。
[VSCode Rust　拡張機能ダウンロード](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust)

![115.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/fb73a269-082d-83cf-8ba6-8684a5de59d0.png)
画面のInstallボタンをクリックすると、閉じていたVSCodeが立ち上がります。
![116.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/728960f8-a34a-b344-9db4-840730d8b014.png)
この画面でInstallをクリックするとRust拡張機能がVSCodeにインストールされます。
ここで表示しているタブを閉じてください。
次にRustコードを格納するWorkspaceを作ります。
どの場所でも構いませんが、ここではCドライブ直下にRustというフォルダを作り、今後Rustプロジェクトはここに格納することにします。
作成できましたら、左上にあるエクスプローラボタンをクリックしてください。

![130.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/df84a05b-d59d-8d97-e645-685dbbb17955.png)

さらにNO FOLEDER OPENEDの矢印で中を見ると、OPEN　FOLDER　というボタンがありますのでこれでさきほど作成したRustフォルダを選択します。

![131.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/c236ba34-60ef-34b1-f997-9ff7c4e7ec70.png)
それではRustプログラムを作成します。
まずターミナルを開きます。
Terminal→　New Terminal 　で選びます。そしてcargoコマンドで新しプロジェクト名hello_cargoを作成します。このcargoコマンドはプロジェクトで必要な各フォルダまたはファイルなどをすべて作ってくれるものです。これを使うとRustを扱いやすくなります。
cargoコマンドで作成したプロジェクトはプロジェクト名以下のフォルダにすべて格納されることになっていますので、ディレクトリを変更しておきます。


```
$ cargo new hello_cargo
$ cd hello_cargo
```
ソースはsrc以下にはいることになっていますので、src/main.rsを選択してみてください。 cargoコマンドを使ってプロジェクトを作るとHello world表示プログラムがあらかじめ用意されています。

![119.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/898c624d-0d30-f89f-8550-4ed6ec381acd.png)

ターミナルでビルドを行い、走らせるとHewllo worldを表示します。

```
$ cargo build
$ cargo run
```
![120.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/76213a42-ee20-d430-b408-b4a7907fc6ae.png)

これでコマンドラインでのビルドに実行ができるようになりました。このままでも問題なさそうですが、IDEですからやはりここはデバッグ機能も欲しいところです。そこで次のステップです。


<a id="#Step5"></a>
# Step5 　VS Codeのデバッグ拡張機能CodeLLDBをインストール

デバッグ機能を追加するため、ここではCodeLLDBを拡張機能としてインストールします。
拡張機能を素直に検索してもかまいませんが、次のようにデバッグ機能が組み込まれてないうちにデバッグを走らせようとするとデバッグ機能がないため、警告がでます。

Run→Start Debugging

そこでFind Rust extensionボタンをクリックすると
候補が出てきますのでさらにCodeLLDBのinstallをクリックします。

![121.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/922a53af-0d4a-f81c-5bb4-3c484b8ad07c.png)

![122.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/7d5e9fe3-dd29-eca5-ed2a-e6711a34256f.png)


![123.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/2e84603f-2c0a-13a6-9f2c-866a9fe92a37.png)

これで動くような気がしますが、設定が出来ていないためにこのままでは動作しません。

普通にAdd Configuration にて設定をおこなってもかまいませんが、ここでも警告の指示にしたがってやってみましょう。
再度Run→Start Debuggingを動かします。
![124-4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/37a32171-9403-7ecf-bf2d-e92354844467.png)
設定ファイルlaunch configurationがないからデバッグは出来ないとでますので、わかりましたでOKです。
設定ファイルを作るぞということでプルダウンメニューがあらわれます。
ここでLLDAを選択します。

![124-2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/34b43065-a18b-bbb5-42d9-f85c6edfa992.png)

すると設定ファイルが記述されます。

![124-1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/76786328-8c08-e5e4-0414-b27956348e46.png)

CodeLLDBをインストールしたときに、QuickStartとして以下のコードを使えと書いてありますが、それとほぼ同じです。

```
Here's a minimal debug configuration to get you started:
{
    "name": "Launch",
    "type": "lldb",
    "request": "launch",
    "program": "${workspaceFolder}/<my program>",
    "args": ["-arg1", "-arg2"],
}
```
ここで設定が終わっているような気がするのですが、実はまだ設定が終了していません。
これですぐにでも動くような気がしますが、このままでは動作しません。
your programと書かれているところが設定し終わっていないからです。

cargoの構成ではコンパイルされた実行ファイルは/target/debug/以下に入る約束になっています。
エクスプローラでも確認できます。
そのパスを含めたかたちで設定します。ここでは

```
hello_cargo/target/debug/hello_cargo.exe
```
となります。


![125.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/83762141-453f-704f-b77b-aff8652df825.png)

設定ファイルを保存後（launch.json)、あらためてStart Debuggingを行うとデバッグできるようになります。
ここではブレークポイントをprintln文に設定して走らせた場合です。

![126.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191293/175a750d-4f7d-e612-ed28-2b97b1906f4a.png)

VSCodeに慣れていない人にもわかるように、なぜそうしているのかも含めて説明したつもりですが、印象としては思ったより面倒だなという印象です。

Eclipseの投稿は以下です(20210814追記)
[【Rust】EclipseでRustのIDE環境を作ってみる](https://qiita.com/yannori/items/569f4c8825521f7c9fa8)

<a id="#ref"></a>
# 参考文献
- [Rust Crash Course | Rustlang](https://www.youtube.com/watch?v=zF34dRivLOw)