diff --git a/src/lib.rs b/src/lib.rs index 9db8097..444a99c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -186,6 +186,14 @@ impl FromStr for OrderedFloat { } } +impl Neg for OrderedFloat { + type Output = Self; + + fn neg(self) -> Self { + OrderedFloat(-self.0) + } +} + /// A wrapper around Floats providing an implementation of Ord and Hash. /// /// A NaN value cannot be stored in this type. diff --git a/tests/test.rs b/tests/test.rs index 889ee73..1c3c385 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -535,3 +535,13 @@ fn test_add_fails_on_nan() { let b = NotNan::new(std::f32::NEG_INFINITY).unwrap(); let _c = a + b; } + +#[test] +fn ordered_f32_neg() { + assert_eq!(OrderedFloat(-7.0f32), -OrderedFloat(7.0f32)); +} + +#[test] +fn ordered_f64_neg() { + assert_eq!(OrderedFloat(-7.0f64), -OrderedFloat(7.0f64)); +}