样例源代码如下:

1
2
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
39
40
41
42
43
44
45
46
47
48
use rand::Rng;
use std::cmp::Ordering;
use std::io;

fn main() {
println!("猜数游戏!"); // 这不是一个函数,而是宏

// 下面定义了一个不可变变量,rust是一个强变量类型语言,
// 编译器会自动匹配类型创建变量。
// 赋值语句右边调用了rand这个crate中的函数,生成[1, 101)中的一个u32变量
let secret_number = rand::thread_rng().gen_range(1, 101);
// println!("神秘数字是:{}", secret_number);


loop {
println!("猜测一个数");

// mut关键字:代表变量可变
// String命名空间中的new函数。返回一个字符串变量
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("无法读取行");
// shadow

// 变量右边冒号声明变量类型,parse函数实现类型转换,expect捕获异常
// let guess: u32 = guess.trim().parse().expect("请输入一个数字!");
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
// 下划线代表不关心里面的信息
Err(_) => {
println!("请输入一个数!");
continue;
},
};
println!("你猜的数是:{}", guess);

// cmp进行比较,使用match进行模式匹配
// 每一个分支都是一个arm
match guess.cmp(&secret_number) {
Ordering::Less => println!("太小了!"), // arm
Ordering::Greater => println!("太大了!"),
Ordering::Equal => {
println!("你赢了!");
break;
}
}
}

}
2022-03-07
Contents

⬆︎TOP