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