53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
#![warn(clippy::useless_nonzero_new_unchecked)]
|
|
|
|
use std::num::{NonZero, NonZeroUsize};
|
|
|
|
#[clippy::msrv = "1.83"]
|
|
const fn func() -> NonZeroUsize {
|
|
const { NonZeroUsize::new(3).unwrap() }
|
|
//~^ useless_nonzero_new_unchecked
|
|
}
|
|
|
|
#[clippy::msrv = "1.82"]
|
|
const fn func_older() -> NonZeroUsize {
|
|
unsafe { NonZeroUsize::new_unchecked(3) }
|
|
}
|
|
|
|
const fn func_performance_hit_if_linted() -> NonZeroUsize {
|
|
unsafe { NonZeroUsize::new_unchecked(3) }
|
|
}
|
|
|
|
const fn func_may_panic_at_run_time_if_linted(x: usize) -> NonZeroUsize {
|
|
unsafe { NonZeroUsize::new_unchecked(x) }
|
|
}
|
|
|
|
macro_rules! uns {
|
|
($expr:expr) => {
|
|
unsafe { $expr }
|
|
};
|
|
}
|
|
|
|
macro_rules! nzu {
|
|
() => {
|
|
NonZeroUsize::new_unchecked(1)
|
|
};
|
|
}
|
|
|
|
fn main() {
|
|
const _A: NonZeroUsize = NonZeroUsize::new(3).unwrap();
|
|
//~^ useless_nonzero_new_unchecked
|
|
|
|
static _B: NonZero<u8> = NonZero::<u8>::new(42).unwrap();
|
|
//~^ useless_nonzero_new_unchecked
|
|
|
|
const _C: usize = unsafe { NonZeroUsize::new(3).unwrap().get() };
|
|
//~^ useless_nonzero_new_unchecked
|
|
|
|
const AUX: usize = 3;
|
|
const _D: NonZeroUsize = NonZeroUsize::new(AUX).unwrap();
|
|
//~^ useless_nonzero_new_unchecked
|
|
|
|
const _X: NonZeroUsize = uns!(NonZeroUsize::new_unchecked(3));
|
|
const _Y: NonZeroUsize = unsafe { nzu!() };
|
|
}
|