1
1
use core:: iter:: * ;
2
2
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
-
26
3
#[ test]
27
4
fn test_map_try_folds ( ) {
28
5
let f = & |acc, x| i32:: checked_add ( 2 * acc, x) ;
@@ -37,15 +14,14 @@ fn test_map_try_folds() {
37
14
}
38
15
39
16
#[ 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 ) ;
51
27
}
0 commit comments