## 環境最新化 [[Rustのtoolchainをアップデート]]する。 ```console rustup update ``` ```console $ rustc --version rustc 1.72.0 (5680fa18f 2023-08-23) $ cargo --version cargo 1.72.0 (103a7ff2e 2023-08-15) ``` ## プロジェクトの作成 ```console cargo new rust-tdd ``` ```console $ cd rust-tdd $ ll -a--- 177 10 Sep 09:48 -N  Cargo.toml d---- - 10 Sep 09:48 -N  src ``` ## 久々のHello World 久々すぎるのでウォーミングアップ。 `src/main.rs` ```rust fn main() { let message = "Hello, World!"; println!("{}", message); } ``` ```console $ cargo run Compiling rust-tdd v0.1.0 (C:\Users\syoum\work\rust-tdd) Finished dev [unoptimized + debuginfo] target(s) in 0.40s Running `target\debug\rust-tdd.exe` Hello, World! ``` > [!positive] セミコロン付け忘れて『あれ...』とか思ってたくらいには久々だった ## ちょっとしたコレクション演算 これだけだと物足りないので、もう少し演算するプログラムを実行してみる。 ```rust use std::ops::Range; fn main() { let xs: Range<i32> = -10..10; let result: i32 = xs.filter(|x| x.is_positive()).map(|x| x * x).sum(); println!("{}", result); } ``` ```console $ cargo run 285 ``` > [!positive] EASYなコードなのにコンパイルエラー出まくって15分くらいかかった... けど[[Rust]]のこの感じが久々で良い ## テストの自動化 [[cargo-watch]]を使う。 ```console cargo install cargo-watch ``` [[Cargoでソースコード変更時に自動でテスト再実行]] を参照。 ## [[ライブラリクレート]]で作り直す [[バイナリクレート]]だと結合テストが書きにくく、未使用警告が出まくるので...。 `main.rs`を`lib.rs`にrenameするだけでOKそう。あとは`tests/integration_test.rs`の追加。この辺は[[🦀11章 自動テストを書く#テストの体系化]]を参考に。 ```console  src  dollar.rs  lib.rs  tests  integration_test.rs ``` ## TODO #todo あとは不満があるたびに改良していく