@@ -7,10 +7,12 @@ use std::rc::Rc;
7
7
use std:: task:: Poll ;
8
8
9
9
use anyhow:: { bail, format_err, Context as _} ;
10
+ use ops:: FilterRule ;
10
11
use serde:: { Deserialize , Serialize } ;
11
12
use toml_edit:: easy as toml;
12
13
13
14
use crate :: core:: compiler:: Freshness ;
15
+ use crate :: core:: Target ;
14
16
use crate :: core:: { Dependency , FeatureValue , Package , PackageId , QueryKind , Source , SourceId } ;
15
17
use crate :: ops:: { self , CompileFilter , CompileOptions } ;
16
18
use crate :: sources:: PathSource ;
@@ -690,20 +692,17 @@ pub fn exe_names(pkg: &Package, filter: &ops::CompileFilter) -> BTreeSet<String>
690
692
ref examples,
691
693
..
692
694
} => {
693
- let all_bins: Vec < String > = bins. try_collect ( ) . unwrap_or_else ( || {
694
- pkg. targets ( )
695
+ let collect = |rule : & _ , f : fn ( & Target ) -> _ | match rule {
696
+ FilterRule :: All => pkg
697
+ . targets ( )
695
698
. iter ( )
696
- . filter ( |t| t. is_bin ( ) )
697
- . map ( |t| t. name ( ) . to_string ( ) )
698
- . collect ( )
699
- } ) ;
700
- let all_examples: Vec < String > = examples. try_collect ( ) . unwrap_or_else ( || {
701
- pkg. targets ( )
702
- . iter ( )
703
- . filter ( |t| t. is_exe_example ( ) )
704
- . map ( |t| t. name ( ) . to_string ( ) )
705
- . collect ( )
706
- } ) ;
699
+ . filter ( |t| f ( t) )
700
+ . map ( |t| t. name ( ) . into ( ) )
701
+ . collect ( ) ,
702
+ FilterRule :: Just ( targets) => targets. clone ( ) ,
703
+ } ;
704
+ let all_bins = collect ( bins, Target :: is_bin) ;
705
+ let all_examples = collect ( examples, Target :: is_exe_example) ;
707
706
708
707
all_bins
709
708
. iter ( )
0 commit comments