Open4
Rust book学習
rust bookを参考にrustのキャッチアップをしていく
rustは低レベルコードが書きやすい?
- 並列処理
- メモリ管理
などなど
cargoは依存関係管理ツール兼ビルドツール
rustfmtは一貫したコーディングスタイルを保証→gofmtみたいな感じ?(保存すると整形してくれるみたいな)
事始め
rustはrustupというツールでダウンロードできる
rustは別プロジェクトでインストール済み
$ rustup
rustup 1.27.0 (bbb9276d2 2024-03-08)
rustupの更新
rustup update
インストール確認
rustc --version
rustc 1.77.2 (25ef9e3d8 2024-04-09)
rustup docでローカルのドキュメントが見れるみたい
あとで見てみる
hello worldしてみる
fn main() {
println!("Hello, world!!")
}
rustc main.rs
./main
Hello, world!!
セミコロンあってもなくても実行できた(あとで調査する)
- RustはAOTコンパイル言語
- rustcで実行可能ファイルにすればrustをインストールしていない人でも実行できる
cargoはrustのビルドシステム兼パッケージマネージャ
cargoでプロジェクト作成する
cargo new rust-book
上記コマンドでCargo.toml
ファイルが作成された
jsでいうpackage.json的なもの?
tomlはTom's Obvious, Minimal Languageの略らしい
rustではパッケージのことをクレート
と呼ぶ
cargoでビルドするにはcargo build
cargo build
# ./target/debug/rust-bookに実行ファイルができた
# 実行するとHello, world!が出力
cargo run
でビルドと実行
cargo run
# Hello, world!
cargo check
で正常にコンパイルできるか確認
まとめ
- rustのインストール
- コードの実行
- cargoの使い方
- new, build, run, check
数当てゲームのプログラミング
rustでは変数はデフォルトでimmutableになる→3章で説明
mutをつけることでmutableになる
newは関連関数?
rustは汎用型としてResult型が存在する。今回のコードの場合はio::Resultのようなサブモジュール用の型がread_line
から返される。Resultについて何も処理しないと警告が出るのでexpectなどでエラーの処理を追加する。
io::stdin()
.read_line(&mut guess);
.expect("Failed to read line"); // <-- この処理がないと警告が出る
cargoは外部依存がある場合には、Crete.ioから最新のバージョンを取得してくる