如果让我们放手

if let

结合模式 matchif 语句,允许执行简短的非穷举匹配。

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!("");