99// except according to those terms.
1010
1111//! Integer trait and functions.
12+ //!
13+ //! ## Compatibility
14+ //!
15+ //! The `num-integer` crate is tested for rustc 1.8 and greater.
1216
1317#![ doc( html_root_url = "https://docs.rs/num-integer/0.1" ) ]
1418
19+ #![ cfg_attr( not( feature = "std" ) , no_std) ]
20+ #[ cfg( feature = "std" ) ]
21+ extern crate core;
22+
1523extern crate num_traits as traits;
1624
17- use std:: ops:: Add ;
25+ use core:: ops:: Add ;
26+ use core:: mem;
1827
1928use traits:: { Num , Signed } ;
2029
@@ -267,7 +276,7 @@ macro_rules! impl_integer_for_isize {
267276
268277 while m != 0 {
269278 m >>= m. trailing_zeros( ) ;
270- if n > m { :: std :: mem:: swap( & mut n, & mut m) }
279+ if n > m { mem:: swap( & mut n, & mut m) }
271280 m -= n;
272281 }
273282
@@ -312,6 +321,7 @@ macro_rules! impl_integer_for_isize {
312321 #[ cfg( test) ]
313322 mod $test_mod {
314323 use Integer ;
324+ use core:: mem;
315325
316326 /// Checks that the division rule holds for:
317327 ///
@@ -389,7 +399,7 @@ macro_rules! impl_integer_for_isize {
389399 fn test_gcd_cmp_with_euclidean( ) {
390400 fn euclidean_gcd( mut m: $T, mut n: $T) -> $T {
391401 while m != 0 {
392- :: std :: mem:: swap( & mut m, & mut n) ;
402+ mem:: swap( & mut m, & mut n) ;
393403 m %= n;
394404 }
395405
@@ -526,7 +536,7 @@ macro_rules! impl_integer_for_usize {
526536
527537 while m != 0 {
528538 m >>= m. trailing_zeros( ) ;
529- if n > m { :: std :: mem:: swap( & mut n, & mut m) }
539+ if n > m { mem:: swap( & mut n, & mut m) }
530540 m -= n;
531541 }
532542
@@ -573,6 +583,7 @@ macro_rules! impl_integer_for_usize {
573583 #[ cfg( test) ]
574584 mod $test_mod {
575585 use Integer ;
586+ use core:: mem;
576587
577588 #[ test]
578589 fn test_div_mod_floor( ) {
@@ -600,7 +611,7 @@ macro_rules! impl_integer_for_usize {
600611 fn test_gcd_cmp_with_euclidean( ) {
601612 fn euclidean_gcd( mut m: $T, mut n: $T) -> $T {
602613 while m != 0 {
603- :: std :: mem:: swap( & mut m, & mut n) ;
614+ mem:: swap( & mut m, & mut n) ;
604615 m %= n;
605616 }
606617 n
@@ -817,9 +828,10 @@ fn test_iter_binomial() {
817828 macro_rules! check_simple {
818829 ( $t: ty) => { {
819830 let n: $t = 3 ;
820- let c: Vec <_> = IterBinomial :: new( n) . collect( ) ;
821- let expected = vec![ 1 , 3 , 3 , 1 ] ;
822- assert_eq!( c, expected) ;
831+ let expected = [ 1 , 3 , 3 , 1 ] ;
832+ for ( b, & e) in IterBinomial :: new( n) . zip( & expected) {
833+ assert_eq!( b, e) ;
834+ }
823835 } }
824836 }
825837
@@ -835,9 +847,8 @@ fn test_iter_binomial() {
835847 macro_rules! check_binomial {
836848 ( $t: ty, $n: expr) => { {
837849 let n: $t = $n;
838- let c: Vec <_> = IterBinomial :: new( n) . collect( ) ;
839850 let mut k: $t = 0 ;
840- for b in c {
851+ for b in IterBinomial :: new ( n ) {
841852 assert_eq!( b, binomial( n, k) ) ;
842853 k += 1 ;
843854 }
0 commit comments