if-let 和一对短路吗?

Does if-let with a pair short-circuit?

假设f()g()returnOption<T>.

if let (Some(x), Some(y)) = (f(), g()) {
    h();
}

如果f() returns Noneg()会被计算吗?规范是否保证或禁止评估?

它没有快捷方式。要针对该对进行模式匹配,必须完全构造该对,这意味着 fg 都已被调用。没有惰性求值,模式匹配可能在计算值之前发生。

(顺便说一句,试用起来很容易,Rust 编译器现在几乎 规范。)