53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
|
#![warn(clippy::non_zero_suggestions)]
|
||
|
|
||
|
use std::num::{
|
||
|
NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize, NonZeroU128, NonZeroU16, NonZeroU32,
|
||
|
NonZeroU64, NonZeroU8, NonZeroUsize,
|
||
|
};
|
||
|
|
||
|
fn main() {
|
||
|
// Basic cases
|
||
|
let _ = u8::try_from(NonZeroU8::new(5).unwrap().get());
|
||
|
|
||
|
let _ = u16::from(NonZeroU16::new(10).unwrap().get());
|
||
|
|
||
|
// Different integer types
|
||
|
let _ = u32::from(NonZeroU32::new(15).unwrap().get());
|
||
|
|
||
|
let _ = u64::from(NonZeroU64::new(20).unwrap().get());
|
||
|
|
||
|
let _ = u128::from(NonZeroU128::new(25).unwrap().get());
|
||
|
|
||
|
let _ = usize::from(NonZeroUsize::new(30).unwrap().get());
|
||
|
|
||
|
// Signed integer types
|
||
|
let _ = i8::try_from(NonZeroI8::new(-5).unwrap().get());
|
||
|
|
||
|
let _ = i16::from(NonZeroI16::new(-10).unwrap().get());
|
||
|
|
||
|
let _ = i32::from(NonZeroI32::new(-15).unwrap().get());
|
||
|
|
||
|
// Edge cases
|
||
|
|
||
|
// Complex expression
|
||
|
let _ = u8::from(NonZeroU8::new(5).unwrap().get() + 1);
|
||
|
|
||
|
// Function call
|
||
|
fn get_non_zero() -> NonZeroU8 {
|
||
|
NonZeroU8::new(42).unwrap()
|
||
|
}
|
||
|
let _ = u8::from(get_non_zero().get());
|
||
|
|
||
|
// Method chaining
|
||
|
let _ = u16::from(NonZeroU16::new(100).unwrap().get().checked_add(1).unwrap());
|
||
|
// This should not trigger the lint
|
||
|
|
||
|
// Different conversion methods
|
||
|
let _ = u32::try_from(NonZeroU32::new(200).unwrap().get()).unwrap();
|
||
|
|
||
|
// Cases that should not trigger the lint
|
||
|
let _ = u8::from(5);
|
||
|
let _ = u16::from(10u8);
|
||
|
let _ = i32::try_from(40u32).unwrap();
|
||
|
}
|