@@ -659,6 +659,7 @@ fn add() {
659
659
assert_eq ! ( OrderedFloat ( 0.0 ) + OrderedFloat ( 0.0 ) , 0.0 ) ;
660
660
assert_eq ! ( OrderedFloat ( 0.0 ) + & OrderedFloat ( 0.0 ) , 0.0 ) ;
661
661
assert_eq ! ( & OrderedFloat ( 0.0 ) + OrderedFloat ( 0.0 ) , 0.0 ) ;
662
+ assert_eq ! ( & OrderedFloat ( 0.0 ) + & OrderedFloat ( 0.0 ) , 0.0 ) ;
662
663
assert_eq ! ( OrderedFloat ( 0.0 ) + 0.0 , 0.0 ) ;
663
664
assert_eq ! ( OrderedFloat ( 0.0 ) + & 0.0 , 0.0 ) ;
664
665
assert_eq ! ( & OrderedFloat ( 0.0 ) + 0.0 , 0.0 ) ;
@@ -858,6 +859,35 @@ fn test_pow_fails_on_nan() {
858
859
a. pow ( b) ;
859
860
}
860
861
862
+ #[ test]
863
+ fn test_ref_ref_binop_regression ( ) {
864
+ // repro from:
865
+ // https://github.com/reem/rust-ordered-float/issues/91
866
+ //
867
+ // impl<'a, T> $imp<Self> for &'a OrderedFloat<T>
868
+ // where
869
+ // &'a T: $imp
870
+ // {
871
+ // type Output = OrderedFloat<<&'a T as $imp>::Output>;
872
+ // #[inline]
873
+ // fn $method(self, other: Self) -> Self::Output {
874
+ // OrderedFloat((self.0).$method(&other.0))
875
+ // }
876
+ // }
877
+ fn regression < T > ( p : T ) -> T
878
+ where
879
+ for < ' a > & ' a T : std:: ops:: Sub < & ' a T , Output = T > ,
880
+ {
881
+ & p - & p
882
+ }
883
+
884
+ assert_eq ! ( regression( 0.0_f64 ) , 0.0 ) ;
885
+
886
+ let x = OrderedFloat ( 50.0 ) ;
887
+ let y = OrderedFloat ( 40.0 ) ;
888
+ assert_eq ! ( & x - & y, OrderedFloat ( 10.0 ) ) ;
889
+ }
890
+
861
891
#[ cfg( feature = "arbitrary" ) ]
862
892
mod arbitrary_test {
863
893
use super :: { NotNan , OrderedFloat } ;
0 commit comments