わずか29行!
成果物
実行例
$ cargo run 1〜100までの値を入力してください: 50 大きすぎます! 1〜100までの値を入力してください: 25 大きすぎます! 1〜100までの値を入力してください: 12 大きすぎます! 1〜100までの値を入力してください: 6 小さすぎます! 1〜100までの値を入力してください: 8 大きすぎます! 1〜100までの値を入力してください: 7 ぴったり! やったね!
flowchart
コード
プロジェクト作成。
$ cargo new guessing_game --bin
ランダム生成ライブラリ導入。
Cargo.toml
[dependencies] rand="0.6.5"
main.rs
extern crate rand; use std::io; use std::io::Write; use rand::Rng; use std::cmp::Ordering; fn main() { let secret_number = rand::thread_rng().gen_range(1, 101); loop { print!("1〜100までの値を入力してください: "); io::stdout().flush().unwrap(); let mut guess = String::new(); io::stdin().read_line(&mut guess) .expect("入力エラー。read_line()で失敗しました。"); let guess: u32 = match guess.trim().parse() { Ok(num) => num, Err(_) => continue, }; match guess.cmp(&secret_number) { Ordering::Less => println!("小さすぎます!"), Ordering::Greater => println!("大きすぎます!"), Ordering::Equal => { println!("ぴったり! やったね!"); break; } } } }
実行。
$ cd guessing_game
$ cargo run
所感
Rust様ステキ! 書いて!
参考
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- rustc 1.34.2 (6c2484dc3 2019-05-13)
- cargo 1.34.0 (6789d8a0a 2019-04-01)
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux