前言
本文為「The Rust Programming Language」語言指南的學習筆記。
做法
建立專案。
| 12
 
 | cargo new rust-guessing-gamecd rust-guessing-game
 
 | 
執行程式。
修改 src/main.rs 檔。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | use std::io;
 fn main() {
 println!("請猜測一個數字!");
 
 let mut guess = String::new();
 
 io::stdin().read_line(&mut guess).expect("讀取失敗");
 
 println!("你的猜測為:{}", guess);
 }
 
 | 
修改 Cargo.toml 檔,引入 rand 套件。
| 12
 
 | [dependencies]rand = "0.8.3"
 
 | 
使用 cargo doc 指令開啟文件,查看 rand 套件的使用方法。
可以引用 rand::Rng 特徵,並使用 rand::thread_rng().gen_range() 方法來產生隨機的數字。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | use rand::Rng;use std::cmp::Ordering;
 use std::io;
 
 fn main() {
 println!("請猜測一個數字!");
 
 let secret_number = rand::thread_rng().gen_range(1..101);
 
 
 }
 
 | 
加上 loop 關鍵字,讓使用者重複猜測。
| 12
 3
 4
 5
 
 | loop {let mut guess = String::new();
 
 
 }
 
 | 
處理將字串解析為數字時發生的錯誤。
| 12
 3
 4
 5
 6
 7
 
 | let guess: u32 = match guess.trim()
 .parse()
 {
 Ok(num) => num,
 Err(_) => continue,
 };
 
 | 
最後引入 std::cmp::Ordering 枚舉,比較大小。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 
 | use rand::Rng;use std::cmp::Ordering;
 use std::io;
 
 fn main() {
 println!("請猜測一個數字!");
 
 let secret_number = rand::thread_rng().gen_range(1..101);
 
 println!("祕密數字為:{}", secret_number);
 
 loop {
 let mut guess = String::new();
 
 io::stdin()
 .read_line(&mut guess)
 .expect("讀取失敗");
 
 let guess: u32 = match guess
 .trim()
 .parse()
 {
 Ok(num) => num,
 Err(_) => continue,
 };
 
 println!("你的猜測為:{}", guess);
 
 match guess.cmp(&secret_number) {
 Ordering::Less => println!("太小了!"),
 Ordering::Greater => println!("太大了!"),
 Ordering::Equal => {
 println!("獲勝!");
 break;
 }
 }
 }
 }
 
 | 
執行程式。
程式碼
參考資料