G.TYP.BOL.05 非必要时,布尔运算应使用逻辑运算符( &&/||)而非位运算符 (&/|)

【级别】 建议

【描述】

位运算不支持短路(short-circuiting),所以会影响性能。逻辑运算符则支持短路。

【反例】


#![allow(unused)]
#![warn(clippy::needless_bitwise_bool)]
fn main() {
let (x,y) = (true, false);
if x & !y {} //  不符合:位运算符,不支持短路
}

【正例】


#![allow(unused)]
#![warn(clippy::needless_bitwise_bool)]

fn main() {
let (x,y) = (true, false);
if x && !y {} //  符合:逻辑运算符,支持短路
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
needless_bitwise_boolyesnopedanticallow