From 6a0f82e9036a0a748089ba25dca177a8732163dd Mon Sep 17 00:00:00 2001 From: Greg Echelberger Date: Mon, 11 May 2026 13:02:30 -0400 Subject: [PATCH] Add From> for OrderedFloat Mirrors the existing widening conversion on NotNan so OrderedFloat has the same API surface. Also adds test coverage for both the new impl and the previously-untested NotNan widening. --- src/lib.rs | 7 +++++++ tests/test.rs | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 1518dff..617103c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -399,6 +399,13 @@ impl_ordered_float_from! {f32, i16} impl_ordered_float_from! {f32, u8} impl_ordered_float_from! {f32, u16} +impl From> for OrderedFloat { + #[inline] + fn from(v: OrderedFloat) -> OrderedFloat { + OrderedFloat(v.0 as f64) + } +} + impl Deref for OrderedFloat { type Target = T; diff --git a/tests/test.rs b/tests/test.rs index 06fd6eb..d2cbacf 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -350,6 +350,15 @@ fn not_nan64_bounded() { assert_eq!(NotNan::::max_value(), ::max_value()); } +#[test] +fn widen_f32_to_f64() { + let of: OrderedFloat = OrderedFloat(1.5f32).into(); + assert_eq!(of, OrderedFloat(1.5f64)); + + let nn: NotNan = not_nan(1.5f32).into(); + assert_eq!(nn, not_nan(1.5f64)); +} + #[test] fn not_nan64_from_primitive() { assert_eq!(NotNan::::from_i8(42i8), Some(not_nan(42.0)));