|
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