Skip to content

Commit ccf51f5

Browse files
gechelbergerGreg Echelberger
andauthored
Add From<OrderedFloat<f32>> for OrderedFloat<f64> (#183)
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. Co-authored-by: Greg Echelberger <gechelberger@gmail.com>
1 parent 6cca9b8 commit ccf51f5

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,13 @@ impl_ordered_float_from! {f32, i16}
399399
impl_ordered_float_from! {f32, u8}
400400
impl_ordered_float_from! {f32, u16}
401401

402+
impl From<OrderedFloat<f32>> for OrderedFloat<f64> {
403+
#[inline]
404+
fn from(v: OrderedFloat<f32>) -> OrderedFloat<f64> {
405+
OrderedFloat(v.0 as f64)
406+
}
407+
}
408+
402409
impl<T: FloatCore> Deref for OrderedFloat<T> {
403410
type Target = T;
404411

tests/test.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,15 @@ fn not_nan64_bounded() {
350350
assert_eq!(NotNan::<f64>::max_value(), <f64 as Bounded>::max_value());
351351
}
352352

353+
#[test]
354+
fn widen_f32_to_f64() {
355+
let of: OrderedFloat<f64> = OrderedFloat(1.5f32).into();
356+
assert_eq!(of, OrderedFloat(1.5f64));
357+
358+
let nn: NotNan<f64> = not_nan(1.5f32).into();
359+
assert_eq!(nn, not_nan(1.5f64));
360+
}
361+
353362
#[test]
354363
fn not_nan64_from_primitive() {
355364
assert_eq!(NotNan::<f64>::from_i8(42i8), Some(not_nan(42.0)));

0 commit comments

Comments
 (0)