@@ -148,7 +148,6 @@ struct Progress {
148
148
}
149
149
150
150
enum Kind < ' a > {
151
- SkipAsPrivate ,
152
151
Normal ,
153
152
Each { features : Vec < & ' a Feature > } ,
154
153
Powerset { features : Vec < Vec < & ' a Feature > > } ,
@@ -159,15 +158,15 @@ fn determine_kind<'a>(
159
158
id : & PackageId ,
160
159
progress : & mut Progress ,
161
160
multiple_packages : bool ,
162
- ) -> Kind < ' a > {
161
+ ) -> Option < Kind < ' a > > {
163
162
assert ! ( cx. subcommand. is_some( ) ) ;
164
163
if cx. ignore_private && cx. is_private ( id) {
165
164
info ! ( "skipped running on private package `{}`" , cx. name_verbose( id) ) ;
166
- return Kind :: SkipAsPrivate ;
165
+ return None ;
167
166
}
168
167
if !cx. each_feature && !cx. feature_powerset {
169
168
progress. total += 1 ;
170
- return Kind :: Normal ;
169
+ return Some ( Kind :: Normal ) ;
171
170
}
172
171
173
172
let package = cx. packages ( id) ;
@@ -227,14 +226,14 @@ fn determine_kind<'a>(
227
226
&& features. is_empty ( )
228
227
{
229
228
progress. total += 1 ;
230
- Kind :: Normal
229
+ Some ( Kind :: Normal )
231
230
} else {
232
231
progress. total += features. len ( )
233
232
+ !cx. exclude_no_default_features as usize
234
233
+ ( !cx. exclude_all_features
235
234
&& pkg_features. normal ( ) . len ( ) + pkg_features. optional_deps ( ) . len ( ) > 1 )
236
235
as usize ;
237
- Kind :: Each { features }
236
+ Some ( Kind :: Each { features } )
238
237
}
239
238
} else if cx. feature_powerset {
240
239
let features =
@@ -245,14 +244,14 @@ fn determine_kind<'a>(
245
244
&& features. is_empty ( )
246
245
{
247
246
progress. total += 1 ;
248
- Kind :: Normal
247
+ Some ( Kind :: Normal )
249
248
} else {
250
249
progress. total += features. len ( )
251
250
+ !cx. exclude_no_default_features as usize
252
251
+ ( !cx. exclude_all_features
253
252
&& pkg_features. normal ( ) . len ( ) + pkg_features. optional_deps ( ) . len ( ) > 1 )
254
253
as usize ;
255
- Kind :: Powerset { features }
254
+ Some ( Kind :: Powerset { features } )
256
255
}
257
256
} else {
258
257
unreachable ! ( )
@@ -276,7 +275,9 @@ fn determine_package_list<'a>(
276
275
let multiple_packages = cx. workspace_members ( ) . len ( ) . saturating_sub ( cx. exclude . len ( ) ) > 1 ;
277
276
cx. workspace_members ( )
278
277
. filter ( |id| !cx. exclude . contains ( & cx. packages ( id) . name ) )
279
- . map ( |id| ( id, determine_kind ( cx, id, progress, multiple_packages) ) )
278
+ . filter_map ( |id| {
279
+ determine_kind ( cx, id, progress, multiple_packages) . map ( |kind| ( id, kind) )
280
+ } )
280
281
. collect ( )
281
282
} else if !cx. package . is_empty ( ) {
282
283
if let Some ( spec) = cx
@@ -290,19 +291,25 @@ fn determine_package_list<'a>(
290
291
let multiple_packages = cx. package . len ( ) > 1 ;
291
292
cx. workspace_members ( )
292
293
. filter ( |id| cx. package . contains ( & cx. packages ( id) . name ) )
293
- . map ( |id| ( id, determine_kind ( cx, id, progress, multiple_packages) ) )
294
+ . filter_map ( |id| {
295
+ determine_kind ( cx, id, progress, multiple_packages) . map ( |kind| ( id, kind) )
296
+ } )
294
297
. collect ( )
295
298
} else if cx. current_package ( ) . is_none ( ) {
296
299
let multiple_packages = cx. workspace_members ( ) . len ( ) > 1 ;
297
300
cx. workspace_members ( )
298
- . map ( |id| ( id, determine_kind ( cx, id, progress, multiple_packages) ) )
301
+ . filter_map ( |id| {
302
+ determine_kind ( cx, id, progress, multiple_packages) . map ( |kind| ( id, kind) )
303
+ } )
299
304
. collect ( )
300
305
} else {
301
306
let current_package = & cx. packages ( cx. current_package ( ) . unwrap ( ) ) . name ;
302
307
let multiple_packages = false ;
303
308
cx. workspace_members ( )
304
309
. find ( |id| cx. packages ( id) . name == * current_package)
305
- . map ( |id| vec ! [ ( id, determine_kind( cx, id, progress, multiple_packages) ) ] )
310
+ . and_then ( |id| {
311
+ determine_kind ( cx, id, progress, multiple_packages) . map ( |kind| vec ! [ ( id, kind) ] )
312
+ } )
306
313
. unwrap_or_default ( )
307
314
} )
308
315
}
@@ -344,10 +351,6 @@ fn exec_on_package(
344
351
progress : & mut Progress ,
345
352
keep_going : & mut KeepGoing ,
346
353
) -> Result < ( ) > {
347
- if let Kind :: SkipAsPrivate = kind {
348
- return Ok ( ( ) ) ;
349
- }
350
-
351
354
let package = cx. packages ( id) ;
352
355
353
356
let mut line = line. clone ( ) ;
@@ -366,7 +369,6 @@ fn exec_on_package(
366
369
return exec_cargo ( cx, id, & mut line, progress, keep_going) ;
367
370
}
368
371
Kind :: Each { .. } | Kind :: Powerset { .. } => { }
369
- Kind :: SkipAsPrivate => unreachable ! ( ) ,
370
372
}
371
373
372
374
if !cx. no_default_features {
@@ -394,7 +396,7 @@ fn exec_on_package(
394
396
exec_cargo_with_features ( cx, id, & line, progress, keep_going, f) ?;
395
397
}
396
398
}
397
- _ => unreachable ! ( ) ,
399
+ Kind :: Normal => unreachable ! ( ) ,
398
400
}
399
401
400
402
let pkg_features = cx. pkg_features ( id) ;
0 commit comments