在 Rust 中,变量默认是不可变的。下面的例子展示了如何在变量名前使用 mut 来使一个变量可变:
let foo = 5; // 不可变
let mut bar = 5; // 可变
Rust 标准库中有很多叫做 Result 的类型:一个通用的 Result 以及在子模块中的特化版本,比如 io::Result。
Result 类型是 枚举(enumerations),通常也写作 enums。枚举类型持有固定集合的值,这些值被称为枚举的 成员(variants)。第六章将介绍枚举的更多细节。
Result 的成员是 Ok 和 Err,Ok 成员表示操作成功,内部包含成功时产生的值。Err 成员则意味着操作失败,并且包含失败的前因后果。
io::Result 的实例拥有 expect 方法。
如果 io::Result 实例的值是 Err,expect 会导致程序崩溃,并显示当做参数传递给 expect 的信息。
如果 io::Result 实例的值是 Ok,expect 会获取 Ok 中的值并原样返回。
在本例中,这个值是用户输入到标准输入中的字节数。
let guess: u32 = guess.trim().parse()
.expect("Please type a number!");
用 expect 方法处理即可。如果 parse 不能从字符串生成一个数字,返回一个 Result 的 Err 成员时,expect 会使游戏崩溃并打印附带的信息。如果 parse 成功地将字符串转换为一个数字,它会返回 Result 的 Ok 成员,然后 expect 会返回 Ok 值中的数字。