1616
1717#![ doc( html_root_url = "https://docs.rs/num-iter/0.1" ) ]
1818
19+ #![ cfg_attr( not( feature = "std" ) , no_std) ]
20+ #[ cfg( feature = "std" ) ]
21+ extern crate core;
22+
1923extern crate num_traits as traits;
2024extern crate num_integer as integer;
2125
2226use integer:: Integer ;
2327use traits:: { Zero , One , CheckedAdd , ToPrimitive } ;
24- use std :: ops:: { Add , Sub } ;
28+ use core :: ops:: { Add , Sub } ;
2529
2630/// An iterator over the range [start, stop)
2731#[ derive( Clone ) ]
@@ -266,9 +270,10 @@ impl<A> Iterator for RangeStepInclusive<A>
266270
267271#[ cfg( test) ]
268272mod tests {
269- use std:: usize;
270- use std:: ops:: { Add , Mul } ;
271- use std:: cmp:: Ordering ;
273+ use core:: usize;
274+ use core:: ops:: { Add , Mul } ;
275+ use core:: cmp:: Ordering ;
276+ use core:: iter;
272277 use traits:: { One , ToPrimitive } ;
273278
274279 #[ test]
@@ -321,10 +326,12 @@ mod tests {
321326 }
322327 }
323328
324- assert ! ( super :: range( 0 , 5 ) . collect:: <Vec <isize >>( ) == vec![ 0 , 1 , 2 , 3 , 4 ] ) ;
325- assert ! ( super :: range( -10 , -1 ) . collect:: <Vec <isize >>( ) ==
326- vec![ -10 , -9 , -8 , -7 , -6 , -5 , -4 , -3 , -2 ] ) ;
327- assert ! ( super :: range( 0 , 5 ) . rev( ) . collect:: <Vec <isize >>( ) == vec![ 4 , 3 , 2 , 1 , 0 ] ) ;
329+ assert ! ( super :: range( 0 , 5 )
330+ . eq( [ 0 , 1 , 2 , 3 , 4 ] . iter( ) . cloned( ) ) ) ;
331+ assert ! ( super :: range( -10 , -1 )
332+ . eq( [ -10 , -9 , -8 , -7 , -6 , -5 , -4 , -3 , -2 ] . iter( ) . cloned( ) ) ) ;
333+ assert ! ( super :: range( 0 , 5 ) . rev( )
334+ . eq( [ 4 , 3 , 2 , 1 , 0 ] . iter( ) . cloned( ) ) ) ;
328335 assert_eq ! ( super :: range( 200 , -5 ) . count( ) , 0 ) ;
329336 assert_eq ! ( super :: range( 200 , -5 ) . rev( ) . count( ) , 0 ) ;
330337 assert_eq ! ( super :: range( 200 , 200 ) . count( ) , 0 ) ;
@@ -338,43 +345,47 @@ mod tests {
338345
339346 #[ test]
340347 fn test_range_inclusive ( ) {
341- assert ! ( super :: range_inclusive( 0 , 5 ) . collect :: < Vec < isize >> ( ) ==
342- vec! [ 0 , 1 , 2 , 3 , 4 , 5 ] ) ;
343- assert ! ( super :: range_inclusive( 0 , 5 ) . rev( ) . collect :: < Vec < isize >> ( ) ==
344- vec! [ 5 , 4 , 3 , 2 , 1 , 0 ] ) ;
348+ assert ! ( super :: range_inclusive( 0 , 5 )
349+ . eq ( [ 0 , 1 , 2 , 3 , 4 , 5 ] . iter ( ) . cloned ( ) ) ) ;
350+ assert ! ( super :: range_inclusive( 0 , 5 ) . rev( )
351+ . eq ( [ 5 , 4 , 3 , 2 , 1 , 0 ] . iter ( ) . cloned ( ) ) ) ;
345352 assert_eq ! ( super :: range_inclusive( 200 , -5 ) . count( ) , 0 ) ;
346353 assert_eq ! ( super :: range_inclusive( 200 , -5 ) . rev( ) . count( ) , 0 ) ;
347- assert ! ( super :: range_inclusive( 200 , 200 ) . collect:: <Vec <isize >>( ) == vec![ 200 ] ) ;
348- assert ! ( super :: range_inclusive( 200 , 200 ) . rev( ) . collect:: <Vec <isize >>( ) == vec![ 200 ] ) ;
354+ assert ! ( super :: range_inclusive( 200 , 200 )
355+ . eq( iter:: once( 200 ) ) ) ;
356+ assert ! ( super :: range_inclusive( 200 , 200 ) . rev( )
357+ . eq( iter:: once( 200 ) ) ) ;
349358 }
350359
351360 #[ test]
352361 fn test_range_step ( ) {
353- assert ! ( super :: range_step( 0 , 20 , 5 ) . collect:: <Vec <isize >>( ) ==
354- vec![ 0 , 5 , 10 , 15 ] ) ;
355- assert ! ( super :: range_step( 20 , 0 , -5 ) . collect:: <Vec <isize >>( ) ==
356- vec![ 20 , 15 , 10 , 5 ] ) ;
357- assert ! ( super :: range_step( 20 , 0 , -6 ) . collect:: <Vec <isize >>( ) ==
358- vec![ 20 , 14 , 8 , 2 ] ) ;
359- assert ! ( super :: range_step( 200u8 , 255 , 50 ) . collect:: <Vec <u8 >>( ) ==
360- vec![ 200u8 , 250 ] ) ;
361- assert ! ( super :: range_step( 200 , -5 , 1 ) . collect:: <Vec <isize >>( ) == vec![ ] ) ;
362- assert ! ( super :: range_step( 200 , 200 , 1 ) . collect:: <Vec <isize >>( ) == vec![ ] ) ;
362+ assert ! ( super :: range_step( 0 , 20 , 5 )
363+ . eq( [ 0 , 5 , 10 , 15 ] . iter( ) . cloned( ) ) ) ;
364+ assert ! ( super :: range_step( 20 , 0 , -5 )
365+ . eq( [ 20 , 15 , 10 , 5 ] . iter( ) . cloned( ) ) ) ;
366+ assert ! ( super :: range_step( 20 , 0 , -6 )
367+ . eq( [ 20 , 14 , 8 , 2 ] . iter( ) . cloned( ) ) ) ;
368+ assert ! ( super :: range_step( 200u8 , 255 , 50 )
369+ . eq( [ 200u8 , 250 ] . iter( ) . cloned( ) ) ) ;
370+ assert ! ( super :: range_step( 200 , -5 , 1 )
371+ . eq( iter:: empty( ) ) ) ;
372+ assert ! ( super :: range_step( 200 , 200 , 1 )
373+ . eq( iter:: empty( ) ) ) ;
363374 }
364375
365376 #[ test]
366377 fn test_range_step_inclusive ( ) {
367- assert ! ( super :: range_step_inclusive( 0 , 20 , 5 ) . collect :: < Vec < isize >> ( ) ==
368- vec! [ 0 , 5 , 10 , 15 , 20 ] ) ;
369- assert ! ( super :: range_step_inclusive( 20 , 0 , -5 ) . collect :: < Vec < isize >> ( ) ==
370- vec! [ 20 , 15 , 10 , 5 , 0 ] ) ;
371- assert ! ( super :: range_step_inclusive( 20 , 0 , -6 ) . collect :: < Vec < isize >> ( ) ==
372- vec! [ 20 , 14 , 8 , 2 ] ) ;
373- assert ! ( super :: range_step_inclusive( 200u8 , 255 , 50 ) . collect :: < Vec < u8 >> ( ) ==
374- vec! [ 200u8 , 250 ] ) ;
375- assert ! ( super :: range_step_inclusive( 200 , -5 , 1 ) . collect :: < Vec < isize >> ( ) ==
376- vec! [ ] ) ;
377- assert ! ( super :: range_step_inclusive( 200 , 200 , 1 ) . collect :: < Vec < isize >> ( ) ==
378- vec! [ 200 ] ) ;
378+ assert ! ( super :: range_step_inclusive( 0 , 20 , 5 )
379+ . eq ( [ 0 , 5 , 10 , 15 , 20 ] . iter ( ) . cloned ( ) ) ) ;
380+ assert ! ( super :: range_step_inclusive( 20 , 0 , -5 )
381+ . eq ( [ 20 , 15 , 10 , 5 , 0 ] . iter ( ) . cloned ( ) ) ) ;
382+ assert ! ( super :: range_step_inclusive( 20 , 0 , -6 )
383+ . eq ( [ 20 , 14 , 8 , 2 ] . iter ( ) . cloned ( ) ) ) ;
384+ assert ! ( super :: range_step_inclusive( 200u8 , 255 , 50 )
385+ . eq ( [ 200u8 , 250 ] . iter ( ) . cloned ( ) ) ) ;
386+ assert ! ( super :: range_step_inclusive( 200 , -5 , 1 )
387+ . eq ( iter :: empty ( ) ) ) ;
388+ assert ! ( super :: range_step_inclusive( 200 , 200 , 1 )
389+ . eq ( iter :: once ( 200 ) ) ) ;
379390 }
380391}
0 commit comments