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 None
,g()
会被计算吗?规范是否保证或禁止评估?
它没有快捷方式。要针对该对进行模式匹配,必须完全构造该对,这意味着 f
和 g
都已被调用。没有惰性求值,模式匹配可能在计算值之前发生。
(顺便说一句,试用起来很容易,Rust 编译器现在几乎 是 规范。)
假设f()
和g()
returnOption<T>
.
if let (Some(x), Some(y)) = (f(), g()) {
h();
}
如果f()
returns None
,g()
会被计算吗?规范是否保证或禁止评估?
它没有快捷方式。要针对该对进行模式匹配,必须完全构造该对,这意味着 f
和 g
都已被调用。没有惰性求值,模式匹配可能在计算值之前发生。
(顺便说一句,试用起来很容易,Rust 编译器现在几乎 是 规范。)