#![warn(clippy::useless_nonzero_new_unchecked)] use std::num::{NonZero, NonZeroUsize}; #[clippy::msrv = "1.83"] const fn func() -> NonZeroUsize { const { unsafe { NonZeroUsize::new_unchecked(3) } } //~^ 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 = unsafe { NonZeroUsize::new_unchecked(3) }; //~^ useless_nonzero_new_unchecked static _B: NonZero = unsafe { NonZero::::new_unchecked(42) }; //~^ useless_nonzero_new_unchecked const _C: usize = unsafe { NonZeroUsize::new_unchecked(3).get() }; //~^ useless_nonzero_new_unchecked const AUX: usize = 3; const _D: NonZeroUsize = unsafe { NonZeroUsize::new_unchecked(AUX) }; //~^ useless_nonzero_new_unchecked const _X: NonZeroUsize = uns!(NonZeroUsize::new_unchecked(3)); const _Y: NonZeroUsize = unsafe { nzu!() }; }