G.CNS.02 不应断言常量布尔类型

【级别】 建议

【描述】

此类语句会被编译器优化掉。最好直接使用 panic!unreachable!代替。

【反例】


#![allow(unused)]
fn main() {
// 不符合
const B: bool = false;
assert!(B);
assert!(true);
}

【正例】


#![allow(unused)]
fn main() {
// 符合
panic!("something");
}

【例外】

该示例需要维护一个常量的不变性,确保它在未来修改时不会被无意中破坏。类似于 static_assertions 的作用。


#![allow(unused)]
#![allow(clippy::assertions_on_constants)]
fn main() {
const MIN_OVERFLOW: usize = 8192;
const MAX_START: usize = 2048;
const MAX_END: usize = 2048;
const MAX_PRINTED: usize = MAX_START + MAX_END;
assert!(MAX_PRINTED < MIN_OVERFLOW);
}

【Lint 检测】

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