PREDICT → OBSERVE → EXPLAIN
次の1行で、何が変わる?
まず予想する。図を動かす。そして、自分のRustコードで確かめる。
LESSONS 03 / 04
値は同じ。使える変数は?
Rustで確かめる例
所有者とデータの関係
実際のメモリ配置ではなく、所有者・参照・データの関係を示す図。
自分の言葉で説明する
考えるヒント
本物の実行: cargo run -p ownership-lab · 診断: python3 scripts/check_compile_errors.py
LESSON 07
失敗も、返り値になる。
整数へ変換し、負数を拒否する関数を考える。返るのは Result<i32, String>。
// まず変換だけの小さい例で確認する
let result = "42".parse::<i32>();
match result {
Ok(value) => println!("整数: {value}"),
Err(error) => println!("失敗: {error}"),
}
文字列
"42"parse::<i32>
負数を検査
上のコードは参考例。自分の実装はex05へ。cargo test -p exercises ex05 -- --ignored
LESSON 05
最後の要素は、通った?
0..end はendを含まない。終点を変えて、処理される要素と結果を比べよう。
for index in 0..3
期待する偶数の数 2
実際の数 1
空配列では、何が起きる?
長さ0から1を引くと、usizeの範囲に収まらない。演習のデバッグビルドではpanicする。最後の要素だけ直しても、空配列の問題が残らないか考えよう。
本物の実行: ./scripts/debug-build.sh → ./target/debug/off_by_one
停止して見る: rust-lldb target/debug/off_by_one
基礎の次は プロダクトの図解: 受付・待ち行列・保存と応答 へ。