如果让我们放手
if let
结合模式 match
和 if
语句,允许执行简短的非穷举匹配。
if let Some(x) = option {
do_something(x);
}
这相当于:
match option {
Some(x) => do_something(x),
_ => {},
}
这些块也可以有 else
语句。
if let Some(x) = option {
do_something(x);
} else {
panic!("option was None");
}
该块相当于:
match option {
Some(x) => do_something(x),
None => panic!("option was None"),
}
while let
结合模式匹配和 while 循环。
let mut cs = "Hello, world!".chars();
while let Some(x) = cs.next() {
print("{}+", x);
}
println!("");
这打印 H+e+l+l+o+,+ +w+o+r+l+d+!+
。
它相当于使用 loop {}
和 match
语句:
let mut cs = "Hello, world!".chars();
loop {
match cs.next() {
Some(x) => print("{}+", x),
_ => break,
}
}
println!("");