@@ -795,6 +795,8 @@ impl_primitive_ops_ratio!(Ratio<T> for i128);
795795// Implements for BigInt
796796#[ cfg( has_i128) ]
797797impl_primitive_ops_ratio ! ( Ratio <T > for u128 ) ;
798+ #[ cfg( feature = "bigint" ) ]
799+ impl_primitive_ops_ratio ! ( Ratio <T > for BigInt ) ;
798800
799801// Implementing these directly because the implementation of Add<T>, Sub<T>,
800802// Mul<T> and Div<T> for Ratio<T> don't cover these.
@@ -1684,6 +1686,8 @@ mod test {
16841686 }
16851687
16861688 mod arith {
1689+ #[ cfg( feature = "bigint" ) ]
1690+ use bigint:: BigInt ;
16871691 #[ cfg( feature = "bigint" ) ]
16881692 use super :: super :: BigRational ;
16891693 use super :: super :: { Ratio , Rational , Rational32 , Rational64 } ;
@@ -1880,6 +1884,9 @@ mod test {
18801884 fn test_u128 ( a : u128 , b : BigRational , c : BigRational ) {
18811885 assert_eq ! ( a + b, c) ;
18821886 }
1887+ fn test_bigint ( a : BigInt , b : BigRational , c : BigRational ) {
1888+ assert_eq ! ( a + b, c) ;
1889+ }
18831890
18841891 test_isize ( -2 , to_big ( _1) , to_big ( _NEG1) ) ;
18851892 test_usize ( 1 , to_big ( _1) , to_big ( _2) ) ;
@@ -1895,6 +1902,7 @@ mod test {
18951902 test_i128 ( -2 , to_big ( _1) , to_big ( _NEG1) ) ;
18961903 #[ cfg( has_i128) ]
18971904 test_u128 ( 1 , to_big ( _1) , to_big ( _2) ) ;
1905+ test_bigint ( BigInt :: from ( 1 ) , to_big ( _1) , to_big ( _2) ) ;
18981906 }
18991907
19001908 #[ cfg( feature = "bigint" ) ]
@@ -1938,6 +1946,9 @@ mod test {
19381946 fn test_u128 ( a : BigRational , b : u128 , c : BigRational ) {
19391947 assert_eq ! ( a + b, c) ;
19401948 }
1949+ fn test_bigint ( a : BigRational , b : BigInt , c : BigRational ) {
1950+ assert_eq ! ( a + b, c) ;
1951+ }
19411952
19421953 test_isize ( to_big ( _1) , -2 , to_big ( _NEG1) ) ;
19431954 test_usize ( to_big ( _1) , 1 , to_big ( _2) ) ;
@@ -1953,6 +1964,7 @@ mod test {
19531964 test_i128 ( to_big ( _1) , -2 , to_big ( _NEG1) ) ;
19541965 #[ cfg( has_i128) ]
19551966 test_u128 ( to_big ( _1) , 1 , to_big ( _2) ) ;
1967+ test_bigint ( to_big ( _1) , BigInt :: from ( 1 ) , to_big ( _2) ) ;
19561968 }
19571969
19581970 #[ test]
@@ -2111,6 +2123,9 @@ mod test {
21112123 fn test_u128 ( a : u128 , b : BigRational , c : BigRational ) {
21122124 assert_eq ! ( a - b, c) ;
21132125 }
2126+ fn test_bigint ( a : BigInt , b : BigRational , c : BigRational ) {
2127+ assert_eq ! ( a - b, c) ;
2128+ }
21142129
21152130 test_isize ( -1 , to_big ( _1) , to_big ( _NEG2) ) ;
21162131 test_usize ( 2 , to_big ( _1) , to_big ( _1) ) ;
@@ -2126,6 +2141,7 @@ mod test {
21262141 test_i128 ( -1 , to_big ( _1) , to_big ( _NEG2) ) ;
21272142 #[ cfg( has_i128) ]
21282143 test_u128 ( 2 , to_big ( _1) , to_big ( _1) ) ;
2144+ test_bigint ( BigInt :: from ( 2 ) , to_big ( _1) , to_big ( _1) ) ;
21292145 }
21302146
21312147 #[ cfg( feature = "bigint" ) ]
@@ -2169,6 +2185,9 @@ mod test {
21692185 fn test_u128 ( a : BigRational , b : u128 , c : BigRational ) {
21702186 assert_eq ! ( a - b, c) ;
21712187 }
2188+ fn test_bigint ( a : BigRational , b : BigInt , c : BigRational ) {
2189+ assert_eq ! ( a - b, c) ;
2190+ }
21722191
21732192 test_isize ( to_big ( _2) , 1 , to_big ( _1) ) ;
21742193 test_usize ( to_big ( _2) , 1 , to_big ( _1) ) ;
@@ -2184,6 +2203,7 @@ mod test {
21842203 test_i128 ( to_big ( _2) , 1 , to_big ( _1) ) ;
21852204 #[ cfg( has_i128) ]
21862205 test_u128 ( to_big ( _2) , 1 , to_big ( _1) ) ;
2206+ test_bigint ( to_big ( _2) , BigInt :: from ( 1 ) , to_big ( _1) ) ;
21872207 }
21882208
21892209 #[ test]
@@ -2342,6 +2362,9 @@ mod test {
23422362 fn test_u128 ( a : u128 , b : BigRational , c : BigRational ) {
23432363 assert_eq ! ( a * b, c) ;
23442364 }
2365+ fn test_bigint ( a : BigInt , b : BigRational , c : BigRational ) {
2366+ assert_eq ! ( a * b, c) ;
2367+ }
23452368
23462369 test_isize ( -2 , to_big ( _1_2) , to_big ( _NEG1) ) ;
23472370 test_usize ( 2 , to_big ( _1_2) , to_big ( _1) ) ;
@@ -2357,6 +2380,7 @@ mod test {
23572380 test_i128 ( -2 , to_big ( _1_2) , to_big ( _NEG1) ) ;
23582381 #[ cfg( has_i128) ]
23592382 test_u128 ( 2 , to_big ( _1_2) , to_big ( _1) ) ;
2383+ test_bigint ( BigInt :: from ( 2 ) , to_big ( _1_2) , to_big ( _1) ) ;
23602384 }
23612385
23622386 #[ cfg( feature = "bigint" ) ]
@@ -2400,6 +2424,9 @@ mod test {
24002424 fn test_u128 ( a : BigRational , b : u128 , c : BigRational ) {
24012425 assert_eq ! ( a * b, c) ;
24022426 }
2427+ fn test_bigint ( a : BigRational , b : BigInt , c : BigRational ) {
2428+ assert_eq ! ( a * b, c) ;
2429+ }
24032430
24042431 test_isize ( to_big ( _1_2) , -2 , to_big ( _NEG1) ) ;
24052432 test_usize ( to_big ( _1_2) , 2 , to_big ( _1) ) ;
@@ -2415,6 +2442,7 @@ mod test {
24152442 test_i128 ( to_big ( _1_2) , -2 , to_big ( _NEG1) ) ;
24162443 #[ cfg( has_i128) ]
24172444 test_u128 ( to_big ( _1_2) , 2 , to_big ( _1) ) ;
2445+ test_bigint ( to_big ( _1_2) , BigInt :: from ( 2 ) , to_big ( _1) ) ;
24182446 }
24192447
24202448 #[ test]
@@ -2573,6 +2601,9 @@ mod test {
25732601 fn test_u128 ( a : u128 , b : BigRational , c : BigRational ) {
25742602 assert_eq ! ( a / b, c) ;
25752603 }
2604+ fn test_bigint ( a : BigInt , b : BigRational , c : BigRational ) {
2605+ assert_eq ! ( a / b, c) ;
2606+ }
25762607
25772608 test_isize ( -2 , to_big ( _2) , to_big ( _NEG1) ) ;
25782609 test_usize ( 2 , to_big ( _2) , to_big ( _1) ) ;
@@ -2588,6 +2619,7 @@ mod test {
25882619 test_i128 ( -2 , to_big ( _2) , to_big ( _NEG1) ) ;
25892620 #[ cfg( has_i128) ]
25902621 test_u128 ( 2 , to_big ( _2) , to_big ( _1) ) ;
2622+ test_bigint ( BigInt :: from ( 2 ) , to_big ( _2) , to_big ( _1) ) ;
25912623 }
25922624
25932625 #[ cfg( feature = "bigint" ) ]
@@ -2631,6 +2663,9 @@ mod test {
26312663 fn test_u128 ( a : BigRational , b : u128 , c : BigRational ) {
26322664 assert_eq ! ( a / b, c) ;
26332665 }
2666+ fn test_bigint ( a : BigRational , b : BigInt , c : BigRational ) {
2667+ assert_eq ! ( a / b, c) ;
2668+ }
26342669
26352670 test_isize ( to_big ( _2) , -2isize , to_big ( _NEG1) ) ;
26362671 test_usize ( to_big ( _2) , 2usize , to_big ( _1) ) ;
@@ -2646,6 +2681,7 @@ mod test {
26462681 test_i128 ( to_big ( _2) , -2 , to_big ( _NEG1) ) ;
26472682 #[ cfg( has_i128) ]
26482683 test_u128 ( to_big ( _2) , 2 , to_big ( _1) ) ;
2684+ test_bigint ( to_big ( _2) , BigInt :: from ( 2 ) , to_big ( _1) ) ;
26492685 }
26502686
26512687 #[ test]
0 commit comments