@@ -1146,6 +1146,33 @@ fn test_find() {
1146
1146
assert ! ( v. iter( ) . find( |&&x| x % 12 == 0 ) . is_none( ) ) ;
1147
1147
}
1148
1148
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
+
1149
1176
#[ test]
1150
1177
fn test_position ( ) {
1151
1178
let v = & [ 1 , 3 , 9 , 27 , 103 , 14 , 11 ] ;
0 commit comments