开发环境
- Windows 10
- Rust 1.50
- VS Code
项目工程
这里继续沿用上次工程rust-demo。
目标
本次项目在上次猜数字匹配的基础上,实现循环猜数字匹配。本次项目中使用依赖如下:
[dependencies]
rand = "^0.6.0"
Cargo.toml文件内容如下:
编码
要实现循环猜数字的功能,需要引入Rust语言中的循环关键字 - loop。
本次项目的代码如下:
use std::io; // 引入IO库
use std::cmp::Ordering; // 引入排序比较库
use rand::Rng; // 引入Rand库
fn main() {
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1, 101); // 生成1 ~ 100之间的随机数
println!("The secret number is: {}", secret_number);
loop { // 循环,类似于C/C++/Java中的While
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess) // 读取输入的内容,并将其赋值给guess
.expect("Failed to read line");
let guess: u32 = match guess.trim().parse() { // 将guess字符串转成u32整形,并匹配
Ok(num) => num,
Err(_) => continue,
};
println!("You guessed: {}", guess);
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => {
println!("You win!!");
break; // 循环退出语句
}
}
}
}
运行
使用下述命令
cargo run
测试
根据代码功能输入要猜测的数字:
重点
- 循环:loop
- 继续执行:continue
- 退出循环:break