@@ -3,7 +3,6 @@ use std::collections::hash_map::{Entry, HashMap};
3
3
use std:: collections:: { BTreeMap , BTreeSet , HashSet } ;
4
4
use std:: path:: { Path , PathBuf } ;
5
5
use std:: rc:: Rc ;
6
- use std:: slice;
7
6
8
7
use anyhow:: { bail, Context as _} ;
9
8
use glob:: glob;
@@ -136,13 +135,6 @@ pub struct WorkspaceRootConfig {
136
135
custom_metadata : Option < toml:: Value > ,
137
136
}
138
137
139
- /// An iterator over the member packages of a workspace, returned by
140
- /// `Workspace::members`
141
- pub struct Members < ' a , ' cfg > {
142
- ws : & ' a Workspace < ' cfg > ,
143
- iter : slice:: Iter < ' a , PathBuf > ,
144
- }
145
-
146
138
impl < ' cfg > Workspace < ' cfg > {
147
139
/// Creates a new workspace given the target manifest pointed to by
148
140
/// `manifest_path`.
@@ -466,11 +458,14 @@ impl<'cfg> Workspace<'cfg> {
466
458
}
467
459
468
460
/// Returns an iterator over all packages in this workspace
469
- pub fn members < ' a > ( & ' a self ) -> Members < ' a , ' cfg > {
470
- Members {
471
- ws : self ,
472
- iter : self . members . iter ( ) ,
473
- }
461
+ pub fn members ( & self ) -> impl Iterator < Item = & Package > {
462
+ let packages = & self . packages ;
463
+ self . members
464
+ . iter ( )
465
+ . filter_map ( move |path| match packages. get ( path) {
466
+ & MaybePackage :: Package ( ref p) => Some ( p) ,
467
+ _ => None ,
468
+ } )
474
469
}
475
470
476
471
/// Returns a mutable iterator over all packages in this workspace
@@ -494,11 +489,14 @@ impl<'cfg> Workspace<'cfg> {
494
489
}
495
490
496
491
/// Returns an iterator over default packages in this workspace
497
- pub fn default_members < ' a > ( & ' a self ) -> Members < ' a , ' cfg > {
498
- Members {
499
- ws : self ,
500
- iter : self . default_members . iter ( ) ,
501
- }
492
+ pub fn default_members < ' a > ( & ' a self ) -> impl Iterator < Item = & Package > {
493
+ let packages = & self . packages ;
494
+ self . default_members
495
+ . iter ( )
496
+ . filter_map ( move |path| match packages. get ( path) {
497
+ & MaybePackage :: Package ( ref p) => Some ( p) ,
498
+ _ => None ,
499
+ } )
502
500
}
503
501
504
502
/// Returns an iterator over default packages in this workspace
@@ -1569,26 +1567,6 @@ impl<'cfg> Packages<'cfg> {
1569
1567
}
1570
1568
}
1571
1569
1572
- impl < ' a , ' cfg > Iterator for Members < ' a , ' cfg > {
1573
- type Item = & ' a Package ;
1574
-
1575
- fn next ( & mut self ) -> Option < & ' a Package > {
1576
- loop {
1577
- let next = self . iter . next ( ) . map ( |path| self . ws . packages . get ( path) ) ;
1578
- match next {
1579
- Some ( & MaybePackage :: Package ( ref p) ) => return Some ( p) ,
1580
- Some ( & MaybePackage :: Virtual ( _) ) => { }
1581
- None => return None ,
1582
- }
1583
- }
1584
- }
1585
-
1586
- fn size_hint ( & self ) -> ( usize , Option < usize > ) {
1587
- let ( _, upper) = self . iter . size_hint ( ) ;
1588
- ( 0 , upper)
1589
- }
1590
- }
1591
-
1592
1570
impl MaybePackage {
1593
1571
fn workspace_config ( & self ) -> & WorkspaceConfig {
1594
1572
match * self {
0 commit comments