11use core:: iter:: * ;
22
3- #[ test]
4- fn test_find_map ( ) {
5- let xs: & [ isize ] = & [ ] ;
6- assert_eq ! ( xs. iter( ) . find_map( half_if_even) , None ) ;
7- let xs: & [ isize ] = & [ 3 , 5 ] ;
8- assert_eq ! ( xs. iter( ) . find_map( half_if_even) , None ) ;
9- let xs: & [ isize ] = & [ 4 , 5 ] ;
10- assert_eq ! ( xs. iter( ) . find_map( half_if_even) , Some ( 2 ) ) ;
11- let xs: & [ isize ] = & [ 3 , 6 ] ;
12- assert_eq ! ( xs. iter( ) . find_map( half_if_even) , Some ( 3 ) ) ;
13-
14- let xs: & [ isize ] = & [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
15- let mut iter = xs. iter ( ) ;
16- assert_eq ! ( iter. find_map( half_if_even) , Some ( 1 ) ) ;
17- assert_eq ! ( iter. find_map( half_if_even) , Some ( 2 ) ) ;
18- assert_eq ! ( iter. find_map( half_if_even) , Some ( 3 ) ) ;
19- assert_eq ! ( iter. next( ) , Some ( & 7 ) ) ;
20-
21- fn half_if_even ( x : & isize ) -> Option < isize > {
22- if x % 2 == 0 { Some ( x / 2 ) } else { None }
23- }
24- }
25-
263#[ test]
274fn test_map_try_folds ( ) {
285 let f = & |acc, x| i32:: checked_add ( 2 * acc, x) ;
@@ -37,15 +14,14 @@ fn test_map_try_folds() {
3714}
3815
3916#[ test]
40- fn test_filter_map_try_folds ( ) {
41- let mp = & |x| if 0 <= x && x < 10 { Some ( x * 2 ) } else { None } ;
42- let f = & |acc, x| i32:: checked_add ( 2 * acc, x) ;
43- assert_eq ! ( ( -9 ..20 ) . filter_map( mp) . try_fold( 7 , f) , ( 0 ..10 ) . map( |x| 2 * x) . try_fold( 7 , f) ) ;
44- assert_eq ! ( ( -9 ..20 ) . filter_map( mp) . try_rfold( 7 , f) , ( 0 ..10 ) . map( |x| 2 * x) . try_rfold( 7 , f) ) ;
45-
46- let mut iter = ( 0 ..40 ) . filter_map ( |x| if x % 2 == 1 { None } else { Some ( x * 2 + 10 ) } ) ;
47- assert_eq ! ( iter. try_fold( 0 , i8 :: checked_add) , None ) ;
48- assert_eq ! ( iter. next( ) , Some ( 38 ) ) ;
49- assert_eq ! ( iter. try_rfold( 0 , i8 :: checked_add) , None ) ;
50- assert_eq ! ( iter. next_back( ) , Some ( 78 ) ) ;
17+ fn test_double_ended_map ( ) {
18+ let xs = [ 1 , 2 , 3 , 4 , 5 , 6 ] ;
19+ let mut it = xs. iter ( ) . map ( |& x| x * -1 ) ;
20+ assert_eq ! ( it. next( ) , Some ( -1 ) ) ;
21+ assert_eq ! ( it. next( ) , Some ( -2 ) ) ;
22+ assert_eq ! ( it. next_back( ) , Some ( -6 ) ) ;
23+ assert_eq ! ( it. next_back( ) , Some ( -5 ) ) ;
24+ assert_eq ! ( it. next( ) , Some ( -3 ) ) ;
25+ assert_eq ! ( it. next_back( ) , Some ( -4 ) ) ;
26+ assert_eq ! ( it. next( ) , None ) ;
5127}
0 commit comments