WindowsでRust開発環境を作ってみる(VSCode+BuildTools+rustup)
最近はRustが人気と聞き、”技術ミーハー”な筆者としてはRustの開発環境を構築してみたくなりました。
Rustはプログラムの実行が高速であり、C/C++が不得意であったメモリの安全性を確保するなどの特徴を持ち、C/C++に取って代わるプログラミング言語になりえるステータスを持っています。
今回はWindows10+VSCode+BuildTools+rustupでRustの開発環境を構築してみようと思います。
開発環境が構築できたら、RustをESP32(IoTデバイス)用のプログラミング言語にしてプログラムを作ってみたいと考えています。
環境構築の流れは基本的にここを参考にしました。
Microsoft C++ Build Tools をインストールする
#BuildシステムとしてVisual Studioか C++ Build Toolsのどちらかをインストールする必要がありますが、筆者の環境にはVisual Studio Codeがインストールされているので、今回は C++ Build Tools をインストールします。
Microsoft C++ Build Tools をここからダウンロードして、インストーラーを実行します。
必要なワークロードは以下の3つです。
- .NET デスクトップビルドツール
- C++ によるデスクトップ開発
- ユニバーサル Windows プラットフォームビルドツール
インストールにはかなり時間がかかりました。(15分程度)
インストールが完了すると以下のダイアログが表示されます。
インストーラーの表示が以下のようになればインストールは完了です。
rustup をインストールする
#次に「rustup」をインストールします。
rustupはここからダウンロードします。
筆者のWindowsは64ビット版なので64ビット版のインストーラーをダウンロードします。
インストーラーを起動します。
コマンドウインドウが表示されます。
1番目(デフォルト)を選択します。
インストールが開始されます。
インストールが完了すると「Press the Enter Key to continue」と表示されますので、Enterキーを押してコマンドウインドウを閉じます。
VSCode拡張機能のインストール
#今回使用するプラグインは以下の2つです。
- rust-analyzer 拡張機能
- CodeLLDB 拡張機能
Marketplaceで拡張機能を検索してインストールします。
ここまで出来たら、Rustのプログラムを作成する準備は整いました。
はじめてのRustプロジェクト作成
#簡単なRustプロジェクトを作成してみます。
任意のフォルダに移動し、以下のコマンドをコマンドラインで実行します。
cargo new testproj
testprojというプロジェクトが作成されました。
上記で作成したフォルダ「testproj」をVSCodeで開きます。
「testproj」フォルダ配下に以下のようなフォルダとファイルが作成されていました。
VSCodeで src>main.rs
ファイルを開きます。
Rustのソースコードが右側のペインに表示されます。
RSファイルを開くと以下のファイルやフォルダが作成されました。
- Cargo.lock ファイル
- target フォルダ
またプラグインの機能により、以下のように「Run」や「Debug」というボタンがコード上に表示されます。
Runボタンを押します。
プログラムが実行され、コマンドライン上に「Hello, World!」と表示されました。
実行されたプログラムは
target\debug\testproj.exe
のようです。
次にデバッグを実行してみます。
プログラム中の
println!("Hello, world!");
の部分にブレークポイントを設定し、Debugボタンを押します。
ブレークポイントを設定した行でプログラムが一時停止しました。
正常にデバッグできているようです。
まとめ
#今回はWindows10にRustの開発環境を構築してみました。
本当はRust+ESP32(IoTデバイス)の開発環境を構築するところまで掲載したかったのですが、ESP-IDF(Espressif Systems社製ESP32向け公式開発環境)とRustの連携に苦戦していて、まだESP32側への設定が出来ていません。
(Arduino IDEではRust開発はできないようなので、別途ESP-IDFのインストールに挑戦しています)
ESP-IDF単体では以下のようにサンプルプログラム(C言語)のビルドとESP32デバイスへの書き込みも成功しています。
ESP32まわりの問題が片付いたら、次回の記事で報告したいと思います。