猜数游戏-目标
- 生成一个1到100的随机数
- 提示玩家输入一个猜测
- 猜完之后,程序会提示猜测是太小了还是太大了
- 如果猜测正确,那么打印出一个庆祝信息,程序退出 做个项目练练手
$ cargo new guessing_game
$ cd guessing_game
生成文件目录
cargo.toml
执行 cargo run
简单的demo运行没有问题,开始写这个项目
use std::io; // prelue
use rand::Rng; //trait
use std::cmp::Ordering;
fn main() {
// 生成一个1到100的随机数
let secret_number = rand::thread_rng().gen_range(1, 101); // i32 u32 i64
println!("Hello, world!");
let mut guess = String::new();
// 提示玩家输入一个猜测
io::stdin().read_line(&mut guess).expect("read error");
// io::Result Ok,Err
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
println!("你猜测的数是:{}", guess);
// 猜完之后,程序会提示猜测是太小了还是太大了
match guess.cmp(&secret_number){
Ordering::Less => println!("Too small"),
Ordering::Greater => println!("Too big"),
Ordering::Equal => {println!("You win"); break;},
}
}
// 这里需要注意的点
// 1、在声名可变变量时要加关键字 mut,否则按常量处理,会报错
// 2、io::stdin 可以替换为 std:io::stdin
// 3、&mut & 引用关键字
// 4、expect 相当于 js 中的 try catch, 如果不加程序会报warning
// 5、 println!("你铺测的数是:{}", guess); 中的 {}是占位符
// 6、match 从上到下进行条件匹配
// 7、shadow特性:主要用于类型转换