#![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 = NonZero::::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!() }; }