一旦知道结果,&&
和||
就会停止评估吗?
换句话说,(true == true) || (true == false)
将不会评估右侧,因为仅在评估左侧之后,整个表达式就是true
。
答案 0 :(得分:5)
是的,在运行时;当前存在一个编译时错误:const evaluating && and || does not short-circuit #29608。
fn main() {
let x = false || true; // true
let y = false && panic!(); // false, doesn't evaluate `panic!()`
}