|
2 | 2 | #![warn(clippy::eager_transmute)] |
3 | 3 | #![allow(clippy::transmute_int_to_non_zero, clippy::missing_transmute_annotations)] |
4 | 4 |
|
5 | | -use std::num::NonZeroU8; |
| 5 | +use std::num::NonZero; |
6 | 6 |
|
7 | 7 | #[repr(u8)] |
8 | 8 | enum Opcode { |
@@ -85,21 +85,21 @@ macro_rules! impls { |
85 | 85 | } |
86 | 86 | impls!(NonMaxU8, NonZeroNonMaxU8); |
87 | 87 |
|
88 | | -fn niche_tests(v1: u8, v2: NonZeroU8, v3: NonZeroNonMaxU8) { |
89 | | - // u8 -> NonZeroU8, do lint |
90 | | - let _: Option<NonZeroU8> = (v1 > 0).then_some(unsafe { std::mem::transmute(v1) }); |
| 88 | +fn niche_tests(v1: u8, v2: NonZero<u8>, v3: NonZeroNonMaxU8) { |
| 89 | + // u8 -> NonZero<u8>, do lint |
| 90 | + let _: Option<NonZero<u8>> = (v1 > 0).then_some(unsafe { std::mem::transmute(v1) }); |
91 | 91 |
|
92 | | - // NonZeroU8 -> u8, don't lint, target type has no niche and therefore a higher validity range |
93 | | - let _: Option<u8> = (v2 > NonZeroU8::new(1).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
| 92 | + // NonZero<u8> -> u8, don't lint, target type has no niche and therefore a higher validity range |
| 93 | + let _: Option<u8> = (v2 > NonZero::new(1u8).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
94 | 94 |
|
95 | | - // NonZeroU8 -> NonMaxU8, do lint, different niche |
96 | | - let _: Option<NonMaxU8> = (v2 < NonZeroU8::new(255).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
| 95 | + // NonZero<u8> -> NonMaxU8, do lint, different niche |
| 96 | + let _: Option<NonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
97 | 97 |
|
98 | 98 | // NonZeroNonMaxU8 -> NonMaxU8, don't lint, target type has more validity |
99 | 99 | let _: Option<NonMaxU8> = (v3 < 255).then_some(unsafe { std::mem::transmute(v2) }); |
100 | 100 |
|
101 | | - // NonZeroU8 -> NonZeroNonMaxU8, do lint, target type has less validity |
102 | | - let _: Option<NonZeroNonMaxU8> = (v2 < NonZeroU8::new(255).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
| 101 | + // NonZero<u8> -> NonZeroNonMaxU8, do lint, target type has less validity |
| 102 | + let _: Option<NonZeroNonMaxU8> = (v2 < NonZero::new(255u8).unwrap()).then_some(unsafe { std::mem::transmute(v2) }); |
103 | 103 | } |
104 | 104 |
|
105 | 105 | fn main() {} |
0 commit comments