diff --git a/src/trait_handlers/ord/ord_enum.rs b/src/trait_handlers/ord/ord_enum.rs index 0edcb89..28e4b0e 100644 --- a/src/trait_handlers/ord/ord_enum.rs +++ b/src/trait_handlers/ord/ord_enum.rs @@ -210,7 +210,7 @@ impl TraitHandler for OrdEnumHandler { } else { let discriminant_cmp = quote! { unsafe { - ::core::cmp::Ord::cmp(&*<*const _>::from(self).cast::<#discriminant_type>(), &*<*const _>::from(other).cast::<#discriminant_type>()) + ::core::cmp::Ord::cmp(&*<*const Self>::from(self).cast::<#discriminant_type>(), &*<*const Self>::from(other).cast::<#discriminant_type>()) } }; diff --git a/src/trait_handlers/partial_ord/partial_ord_enum.rs b/src/trait_handlers/partial_ord/partial_ord_enum.rs index c41036f..e2c5930 100644 --- a/src/trait_handlers/partial_ord/partial_ord_enum.rs +++ b/src/trait_handlers/partial_ord/partial_ord_enum.rs @@ -215,7 +215,7 @@ impl TraitHandler for PartialOrdEnumHandler { } else { let discriminant_cmp = quote! { unsafe { - ::core::cmp::Ord::cmp(&*<*const _>::from(self).cast::<#discriminant_type>(), &*<*const _>::from(other).cast::<#discriminant_type>()) + ::core::cmp::Ord::cmp(&*<*const Self>::from(self).cast::<#discriminant_type>(), &*<*const Self>::from(other).cast::<#discriminant_type>()) } }; diff --git a/tests/ord_enum.rs b/tests/ord_enum.rs index c5d01a7..5a05f0f 100644 --- a/tests/ord_enum.rs +++ b/tests/ord_enum.rs @@ -630,3 +630,11 @@ fn use_partial_ord_attr_ignore() { assert_eq!(Ordering::Less, Enum::Tuple(1, 2).cmp(&Enum::Tuple(1, 3))); assert_eq!(Ordering::Equal, Enum::Tuple(2, 2).cmp(&Enum::Tuple(1, 2))); } + +struct PoisonTypeInference; + +impl From<&PoisonTypeInference> for *const () { + fn from(value: &PoisonTypeInference) -> Self { + value as *const PoisonTypeInference as *const () + } +}