とにかくさっさとRustを始めたい
VS Code の Remote Container 機能を使ってとにかくさっさとRustを始めたいという方に、以下の docker-compose.yaml をご用意いたしました!
version: '3'
services:
rust:
image: rust:1.38
volumes:
- .:/opt/rustapp
environment:
- USER=`${USER}`
working_dir: /opt/rustapp
stdin_open: true
rust:1.38 は現時点での最新バージョンです。Docker HubのRustページから配布されているお好みのバージョンを指定してください。
/opt/rustapp は適当です。こちらもプロジェクト、もしくはバイナリの名前に合わせて調整してください。
${USER} は Cargo 実行する際に環境変数USERがないと怒られたので設定しています。。。(バージョンの依存とかあるのでしょうか?なくて良ければなくていいけど・・・)
こちらを Rust プロジェクトのフォルダに置いてください。
Docker Compose でコンテナの起動
続いて以下のコマンドで上記のコンテナを起動します。
$ cd プロジェクフォルダ
$ docker-compose up -d
あら簡単。
VS Code で開く
VS Code を起動し Remote Explorer のDev Containersタブから プロジェクトフォルダと同じ名前のコンテナ を探して connect to container しましょう。
コンテナの中に接続された状態で VS Code の新規ウィンドウが立ち上がると思います。
Open Folder にて、上記docker-compose.yamlのvolumesで指定したフォルダ(今回の場合は/opt/rustapp)を開いてください。
ターミナルから Cargo の実行
VS Code 上で新規のターミナルを開き、以下のコマンドでRustプロジェクトを開始します。
$ cargo init
Created binary (application) package
Cargo.tomlファイルとsrcフォルダが無事に生成されたと思います。
srcフォルダにはサンプル(?)のHello Worldを出力するコードが既にありますので以下のコマンドでビルド&実行してみましょう!
$ cargo install --path .
Installing rustapp v0.1.0 (/opt/rustapp)
Compiling rustapp v0.1.0 (/opt/rustapp)
Finished release [optimized] target(s) in 0.90s
Installing /usr/local/cargo/bin/rustapp
Installed package `rustapp v0.1.0 (/opt/rustapp)` (executable `rustapp`)
$ rustapp
Hello, world!
cargo install でフォルダ名と同じ名前のバイナリをビルドし/usr/local/cargo/bin/ 以下にインストールしてくれます。
そしてこの時点でもうコマンドとして使えるようになっているのです!
今回の場合のバイナリであるrustappとコマンドを叩くと Hello, World!と応答を返してくれます。
あら簡単!
ここからが大変なんだけどね・・・
Rust、コーディングのハードルはそこそこ高いので新規プロジェクト始めるのくらいは簡単にしておきたいですね〜、ということで!
以上でした。