Syntax and Semantics
if let
if letは、ある種のパターンマッチのwrapperです。
Overheadをなくす効果もあるそうです。
match option {
Some(x) => { foo(x) },
None => {},
}のように、あるパターンにマッチした場合のみ処理をおこなうとき、
if letを使うと次のように書けます。
if let Some(x) = option {
foo(x);
}Some(x)にマッチした場合はfoo(x)が実行されますが、
マッチしなかった場合、なにも起きずに通り過ぎます。
マッチしなかった場合の処理は、else節で書くこともできます。
if let Some(x) = option {
foo(x);
} else {
bar();
}while let
同じように、while letもあります。
あるパターンにマッチする限り処理を繰り返します。
例えば、次のコードは10から0までを順に出力します。
let mut option = Some(10);
while let Some(x) = option {
println!("{}", x);
option = if x == 0 {
None
} else {
Some(x - 1)
}
}