当我们使用match时,我们必须完全匹配它。如果你只需要判断一个特定的分支,match是冗余的,if let只能匹配感兴趣的特定分支, 在这种情况下,写作比match简单。
if let
if let 的语法为 if let PATTERN=EXPRESSION{BODY}。 后面可以跟一个可选的else分支。use std::collections::HashMap;fn main() {let mut map = HashMap::new();map.insert("one", 1);map.insert("two", 2);let value = if let Some(v) = map.get("one") {v + 1} else {0};println!({}, value);}
if let块和whilet块 let块还将创建新的作用域, value是Option
如果if 如果let对应的模式匹配不成功,则将执行else分支的代码。此外,我们还可以混合if let、else if及else if let表达式匹配。这种混合语法可以提供更多的灵活性和一系列if let、else if、else if let分支中的条件不需要相互关联。 fn main() {let value1: Option
while let
while的条件循环 let的结构和if let非常相似,但它将反复执行相同的模式匹配,直到失败。例如如下。 let a = Range(..);while let Some(i) = a.next() {// do something}