@@ -78,7 +78,7 @@ fn canonicalize_signed_zero<T: FloatCore>(x: T) -> T {
78
78
///
79
79
/// # Representation
80
80
///
81
- /// `OrderedFloat` has `#[repr(transparent)]` and permits any value, so it is sound to use
81
+ /// `OrderedFloat` has `#[repr(transparent)]` and permits any value, so it is sound to use
82
82
/// [transmute](core::mem::transmute) or pointer casts to convert between any type `T` and
83
83
/// `OrderedFloat<T>`.
84
84
/// However, consider using [`bytemuck`] as a safe alternative if possible.
@@ -2754,7 +2754,7 @@ mod impl_arbitrary {
2754
2754
#[ cfg( feature = "bytemuck" ) ]
2755
2755
mod impl_bytemuck {
2756
2756
use super :: { FloatCore , NotNan , OrderedFloat } ;
2757
- use bytemuck:: { AnyBitPattern , CheckedBitPattern , NoUninit , Pod , Zeroable } ;
2757
+ use bytemuck:: { AnyBitPattern , CheckedBitPattern , NoUninit , Pod , TransparentWrapper , Zeroable } ;
2758
2758
2759
2759
unsafe impl < T : Zeroable > Zeroable for OrderedFloat < T > { }
2760
2760
@@ -2776,6 +2776,10 @@ mod impl_bytemuck {
2776
2776
}
2777
2777
}
2778
2778
2779
+ // OrderedFloat allows any value of the contained type, so it is a TransparentWrapper.
2780
+ // NotNan does not, so it is not.
2781
+ unsafe impl < T > TransparentWrapper < T > for OrderedFloat < T > { }
2782
+
2779
2783
#[ test]
2780
2784
fn test_not_nan_bit_pattern ( ) {
2781
2785
use bytemuck:: checked:: { try_cast, CheckedCastError } ;
0 commit comments