5
f()
とg()
返信Option<T>
とします。ペアを短絡してif-letを実行しますか?
if let (Some(x), Some(y)) = (f(), g()) {
h();
}
f()
もし戻っNone
、g()
評価されるのでしょうか?評価は保証されているか、仕様によって禁止されていますか?
f()
とg()
返信Option<T>
とします。ペアを短絡してif-letを実行しますか?
if let (Some(x), Some(y)) = (f(), g()) {
h();
}
f()
もし戻っNone
、g()
評価されるのでしょうか?評価は保証されているか、仕様によって禁止されていますか?
ショートカットはありません。ペアとパターンマッチするには、ペアを完全に構築する必要があります。つまり、f
とg
の両方が呼び出されています。値が計算される前にパターンの一致が発生する可能性のある遅延評価はありません。
(ちなみに、試してみるのは簡単だし、錆コンパイラはかなり今スペックです。)