ドクターメイトでは開発に Rust を導入しているんだけれど、
自分自身は Rust の経験がまったく無いので、業務でも使えるレベルを目指して学習記を残していきます。
基本的には、The Rust Programming Language (通称: The Book) を中心に学習していこうかなと。
必要に応じて、他のブログ記事などを見つつ進めていきます。
コミュニティによる日本語版 ( https://doc.rust-jp.rs/book-ja/title-page.html ) もあるので、
そちらを読み進めても良いかも。
https://doc.rust-lang.org/book/ch01-00-getting-started.html
Linux や macOS ならばターミナルから以下のコマンドでインストール。
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
コマンドを打つと、Current installation options を聞かれるので、
1) Proceed with standard installation (default - just press enter) を選択。
(単に Enter キーを押せば OK)
少し待って Rust in installed now. Great! と表示されれば、無事にインストール完了。
ターミナルを開き直して、以下のコマンドでインストールされていることを確認。
$ rustc --version
rustc 1.77.1 (7cf61ebde 2024-03-27)
今後 Rust をアップデートする場合は、以下のコマンドで。
$ rustup update
作業は Visual Studio Code (VS Code) で。
作業用ディレクトリを作成
以下は一例。
$ mkdir ~/projects
$ mkdir ~/projects/hello_world
作成したディレクトリを VS Code で開く。
rust-analyzer をインストールする
Rust 公式から rust-analyzer という拡張機能が提供されているので、インストールする。
rust-analyzer は入力の補完や、型のチェックなどをサポートする拡張機能なので、
とりあえず導入しておくのが良さそう。
main.rs を作成してコードを書き始める
Rust の拡張子は .rs なのでファイル名は ***.rs という形式になる。
ここでは main.rs という名前でファイルを作成。
※ main 関数は実行可能な Rust のプログラムにおいて、一番初めに動作する特別な関数
fn main() {
println!("Hello, World!");
}
作成したらコンパイルして実行。
$ rustc main.rs
$ ./main
Hello, World!
記念すべき Rust デビュー 👏
Rust には Cargo というビルドシステムとパッケージマネージャを兼ね備えたツールが提供されている。
Cargo は Rust をインストールしたときに同時にインストールされているので、すでにインストールされているはず。
$ cargo --version
cargo 1.77.1 (e52e36006 2024-03-26)
プロジェクトを作成する
cargo コマンドを用いてプロジェクトを作成してみる。
$ cd ~/projects
$ cargo new learning_rust
作成されたファイル群から Cargo.toml を見てみる。
[package]
name = "learning_rust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
TOML 形式で書かれた Cargo の設定ファイルで、パッケージ情報や依存するクレート(コードのパッケージのこと)などを記載する。
[package] にはその名前やバージョンなどを記載し、
[dependencies] には依存するクレートを列挙していく。
ビルドと実行
cargo build コマンドでプロジェクトをビルドする。
$ cargo build
Compiling learning_rust v0.1.0 (/home/oshiroman/projects/learning_rust)
Finished dev [unoptimized + debuginfo] target(s) in 0.12s
ビルドが完了すると ./target/debug ディレクトリ内に実行ファイルが生成される。
さらに cargo run コマンドを使うことでビルドと実行を同時に行うことができる。
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/learning_rust`
Hello, world!
また cargo build --release コマンドでリリースビルドを作成することができる。
リリースビルドは ./target/release 内に作成し、通常のビルドに比べるとコンパイルに時間を要する。
代わりに最適化によって実行速度が向上するため、ベンチマークをとるときはリリースビルドを作成する。
チェック
cargo check コマンドを使うとコンパイル可能かどうかをチェックする。
ビルドや実行よりも高速に動作する。
$ cargo check
Finished dev [unoptimized + debuginfo] target(s) in 0.02s