课程名称:领略Rust之美,挑战双高语言
课程章节: 第4章 Rust 流程控制 4-8 if_let语法糖 4-9 while_let语法糖
课程讲师:叶枭
课程内容:
今天学习的内容是 Rust 中的 if-let
和 while-let
语法糖。
if let
是模式匹配的语法糖,如果只需要匹配一种模式,就可以使用它,而不用使用 match
。
下面分别使用 match 和 if let 来实现一个功能,只打印枚举中的字母A:
enum Alphabet {
A,
B,
}
fn main() {
let letter = Alphabet::A;
match letter {
Alphabet::A => println!("字母A"),
_ => (),
}
// 使用 if let 更简洁一些
if let Alphabet::A = letter {
println!("字母A");
}
}
if let
还可以用于匹配带有参数的枚举。比如,定义一个枚举,它的一个成员 Char 可以传入字符参数。当传入的字符匹配时,就执行对应的逻辑:
enum Symbol {
Char(char),
Number,
}
fn main() {
let letter = Symbol::Char('A');
if let Symbol::Char(x) = letter {
println!("{}", x);
}
}
while let
它的意思是当模式匹配成功时候,while 循环会一直循环下去。如下,如果 letter 的值为 Alphabet::A,即匹配到了,则循环会一直进行下去。
enum Alphabet {
A,
B
}
fn main() {
let letter = Alphabet::A;
while let Alphabet::A = letter {
println!("字母A");
}
}
课程收获
这节课学习了 Rust 中的模式匹配的两个语法糖,if let
和 while let
,前者用的非常多,可以简化模式匹配的用法。后者很少用到。