Tauriをするならmsvc版のRust toolchainを使う

# 要約
Windows で、Tauri の動作環境はmsvc版のRust toolchainでなければなりません。GNU版だと動作しません。

# エラー環境
Windows 11 (v10.0.22621)


```:Tauriプロジェクトのpackage.json
{

...
  
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "preview": "vite preview",
    "tauri": "tauri"
  },
  "dependencies": {
    "@tauri-apps/api": "^1.5.3",
    "react": "^18.2.0",
    "react-dom": "^18.2.0"
  },
  "devDependencies": {
    "@tauri-apps/cli": "^1.5.9",
    "@types/node": "^18.7.10",
    "@types/react": "^18.0.15",
    "@types/react-dom": "^18.0.6",
    "@vitejs/plugin-react": "^3.0.0",
    "typescript": "^4.9.5",
    "vite": "^4.2.1"
  }
}
```

```terminal
$ winget list | find "Rust"
Rust 1.75 (GNU 64-bit)    Rustlang.Rust.GNU    1.75.0.0    winget

$ npm --version
10.2.5

$ yarn --version
1.22.19
```

# 問題発生

[Tauri](https://tauri.app/) はRust+JavaScriptで、デスクトップアプリケーションを作るためのプラットフォームです。Rust toolchainとして`stable-x86_64-pc-windows-gnu` を使用すると、`yarn tauri dev`にてエラーが起きます。

```:エラー内容
$ yarn tauri dev

<省略>

Copy from "...\\webview2-com-sys-0.19.0\\x86\\WebView2LoaderStatic.lib" -> "...\\out\\x86\\WebView2LoaderStatic.lib"
  Error: Io(Error { kind: NotFound, message: "program not found" })

warning: build failed, waiting for other jobs to finish...

<省略>
```

# 解決

msvc版のtoolchainを使いましょう。直接入れる方法もありますが、`rustup`を入れてしまうのが楽です。(デフォルトでmsvc版を使うことができるようです)

```terminal
$ winget remove Rustlang.Rust.GNU
見つかりました Rust (GNU) [Rustlang.Rust.GNU]
パッケージのアンインストールを開始しています...
正常にアンインストールされました

$ winget install  Rustlang.Rustup
見つかりました Rustup: the Rust toolchain installer [Rustlang.Rustup] バージョン 1.26.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-pc-windows-msvc/rustup-init.exe
  ██████████████████████████████  8.19 MB / 8.19 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`

$ rustup toolchain list
stable-x86_64-pc-windows-msvc (default)
```

# 原因 (推測)

Tauri内部で使用しているWebView2が、MSVC バイナリ(.dll)として提供されることに起因するものであると推測されます。(すみません、詳しく調べていません)

https://github.com/tauri-apps/tauri/issues/8210

https://stackoverflow.com/questions/46931981/what-are-the-differences-between-the-gnu-and-msvc-rust-toolchain

# 余談
`rustup` 上の GNU版を用いるとまた違うエラーが出ます。

```terminal:エラー内容
$ rustup --version
rustup 1.26.0 (5af9b9484 2023-04-05)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.75.0 (82e1608df 2023-12-21)`

$ rustup toolchain list
stable-x86_64-pc-windows-gnu (default)
stable-x86_64-pc-windows-msvc

$ yarn tauri dev

...

Caused by:
  process didn't exit successfully: `...\build-script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=TAURI_CONFIG
  cargo:rerun-if-changed=tauri.conf.json
  cargo:rustc-cfg=desktop
  cargo:rustc-cfg=dev
  package.metadata does not exist

  --- stderr
  thread 'main' panicked at ...\src\windows_not_msvc.rs:49:23:
  Couldn't to execute windres to compile "...\out\resource.rc" into "...\out/libresource.a": program not found
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

...

```