@@ -1146,6 +1146,33 @@ fn test_find() {
11461146 assert ! ( v. iter( ) . find( |&&x| x % 12 == 0 ) . is_none( ) ) ;
11471147}
11481148
1149+ #[ test]
1150+ fn test_find_map ( ) {
1151+ let xs: & [ isize ] = & [ ] ;
1152+ assert_eq ! ( xs. iter( ) . find_map( half_if_even) , None ) ;
1153+ let xs: & [ isize ] = & [ 3 , 5 ] ;
1154+ assert_eq ! ( xs. iter( ) . find_map( half_if_even) , None ) ;
1155+ let xs: & [ isize ] = & [ 4 , 5 ] ;
1156+ assert_eq ! ( xs. iter( ) . find_map( half_if_even) , Some ( 2 ) ) ;
1157+ let xs: & [ isize ] = & [ 3 , 6 ] ;
1158+ assert_eq ! ( xs. iter( ) . find_map( half_if_even) , Some ( 3 ) ) ;
1159+
1160+ let xs: & [ isize ] = & [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
1161+ let mut iter = xs. iter ( ) ;
1162+ assert_eq ! ( iter. find_map( half_if_even) , Some ( 1 ) ) ;
1163+ assert_eq ! ( iter. find_map( half_if_even) , Some ( 2 ) ) ;
1164+ assert_eq ! ( iter. find_map( half_if_even) , Some ( 3 ) ) ;
1165+ assert_eq ! ( iter. next( ) , Some ( & 7 ) ) ;
1166+
1167+ fn half_if_even ( x : & isize ) -> Option < isize > {
1168+ if x % 2 == 0 {
1169+ Some ( x / 2 )
1170+ } else {
1171+ None
1172+ }
1173+ }
1174+ }
1175+
11491176#[ test]
11501177fn test_position ( ) {
11511178 let v = & [ 1 , 3 , 9 , 27 , 103 , 14 , 11 ] ;
0 commit comments