VSCode+Rust(+Cargo)でHelloWorldを動かすまで 

はじめに

VSCode+GradleでRustを「とりあえず」動かすにはどうしたらいいのかメモ的に書きます。
今回は主に先人の知恵として下記拝見して、試行錯誤で組み立てた結果です。先人の皆さま、いつもありがとうございます。

[@udayan28さま](https://qiita.com/udayan28)
[Rustの環境構築 with VSCode - Qiita](https://qiita.com/udayan28/items/e59afd39a7ab16911c25)

# 0. 環境

利用したツールと実行環境は以下のとおりです。Cargo

- Linux Mint 19.3
- Rust 1.41.0 (5e1a79984 2020-01-27)
- Cargo 1.41.0 (626f0f40e 2019-12-03)
- VSCode(code) 1.42.1

なお、タイトルの手順にフォーカスするため、個々のツールのインストールについては割愛します。

Rustのインストール手順は以下を参照ください。
[The Rust Programming Language - Installation](https://doc.rust-lang.org/book/ch01-01-installation.html)

# 1. CargoでHelloを動かしてみる

## (1) まずCargoを使わずにHelloする

まず、Cargoすら使わずにHelloを表示することを試しておきます(Rustの動作確認のようなものです)。
ここは本家サイトの手順をリンク掲載します。本家サイトの方が常に最新となるからです。

[Writing and Running a Rust Program](https://doc.rust-lang.org/book/ch01-02-hello-world.html#writing-and-running-a-rust-program)

## (2) CargoでのHello

以下のようにしてCargoでプロジェクトを作成し、実行してみます。

    ximia@thinkpad:~/dev/rust/projects$ cargo new hello_cargo
         Created binary (application) `hello_cargo` package
    
    ximia@thinkpad:~/dev/rust/projects$ ls
    hello_cargo  hello_world
    
    ximia@thinkpad:~/dev/rust/projects$ ls -R hello_cargo/
    hello_cargo/:
    Cargo.toml  src
    
    hello_cargo/src:
    main.rs
    
    ximia@thinkpad:~/dev/rust/projects$ cd hello_cargo/
    
    ximia@thinkpad:~/dev/rust/projects/hello_cargo$ cargo build
        Compiling hello_cargo v0.1.0 (/home/ximia/dev/rust/projects/hello_cargo)
        Finished dev [unoptimized + debuginfo] target(s) in 0.22s
    
    ximia@thinkpad:~/dev/rust/projects/hello_cargo$ cargo run
        Finished dev [unoptimized + debuginfo] target(s) in 0.00s
         Running `target/debug/hello_cargo`
    Hello, world!
    
    ximia@thinkpad:~/dev/rust/projects/hello_cargo$ 

# 2. VSCodeにCargoプロジェクトを取り込む

## (1) hello_cargoフォルダを取り込む

[File] --> [Add Folder to Workspace] でCargo.tomlを格納しているフォルダをVSCodeのWorkspaceに取り込みます。

## (2) Rust/Toml用のプラグインを入れる

以下のように2つのプラグインをインストールします。

### (a) Rusl (rls)

Rustのシンタックス・ハイライト、コード補完など基本的なところを補ってくれるプラグインをインストールします。
画面右側の通り、シンタックス・ハイライトが有効になっています。
![VSCode-rls-plugin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318338/324aeeb9-5e09-7399-b2a9-eace3d81aa38.png)

### (b) toml

Cargo.tomlでTOMLをハイライトしてくれるプラグインです。
こちらも画面右側の通り、シンタックス・ハイライトが有効になっています。
![VSCode-toml-plugin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318338/d157833a-e5ec-76e0-1c56-4f1245ff2586.png)


## (3) tasks.jsonを生成、書き換える
[Terminal] --> [Configure Tasks...] --> [Create tasks.json file from template] --> [Others] により、テンプレートから tasks.json を生成します（図は [Create tasks.json file from template] を選ぶところ）。
![VSCode-generate-tasks.json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318338/0dc344d2-5eb9-f102-7704-656cb2b976a7.png)
プロジェクトのフォルダツリー上、.vscodeの下に tasks.json ができますので、以下の内容でまるっと置き換えます。

```json
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cargo",
            "subcommand": "build",
            "problemMatcher": [
                "$rustc"
            ],
            "group": "build"
        },
        {
            "type": "cargo",
            "subcommand": "run",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
```
# 3. 実行

試しに "Hello, world!" を "Hello, Rust!" と変更・保存して、[Teminal] --> [Run Build Task...] と選択します。
以下のように、Compiling... Hello, Rust!となれば、無事実行完了です！
![スクリーンショット_2020-02-20_20-53-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/318338/77db1cb4-4e06-d44e-b424-38240dbff580.png)

他のtaskもtasks.jsonに同様に追加していくことでさらに開発しやすくなると思います。

=== END ===