rust/tests/ui/non_zero_suggestions.rs

53 lines
1.5 KiB
Rust
Raw Normal View History

2024-07-26 00:51:30 +05:30
#![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();
}