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 name | Clippy 可检测 | Rustc 可检测 | Lint Group | level |
---|---|---|---|---|
needless_bitwise_bool | yes | no | pedantic | allow |