Rust中的逻辑运算符是否支持短路计算?

24

&&|| 会在一个结果已知的情况下停止评估吗? 换句话说,(true == true) || (true == false) 不会评估右侧,因为在仅评估左侧后整个表达式已知为 true

1个回答

32

可以。

根据Rust参考手册

fn main() {
    let x = false || true; // true
    let y = false && panic!(); // false, doesn't evaluate `panic!()`
}

16
这些运算符还有非短路版本的 |& - Sven Marnach
4
这并不是一个真正的“bug” - 它只是尚未实现且被禁止的代码。 - Shepmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接