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

use*_*ser 6 rust

不要&&||停止,只要结果是已知的评估?换句话说,(true == true) || (true == false)不会评估右侧,因为已知整个表达式true仅在评估左侧之后.

use*_*ser 5

是的,在运行时; 目前存在编译时错误:const评估&&和|| 不会短路#29608.

Rust参考:

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

  • 这些运算符也有非短路变量`|`和`&`. (3认同)
  • 它不是真正的**错误** - 它的代码尚未实现且不允许. (2认同)