@@ -494,7 +494,7 @@ fn print_lockfile_generation(
494
494
) -> CargoResult < ( ) > {
495
495
let changes = PackageChange :: new ( ws, resolve) ;
496
496
let num_pkgs: usize = changes
497
- . iter ( )
497
+ . values ( )
498
498
. filter ( |change| change. kind . is_new ( ) && !change. is_member . unwrap_or ( false ) )
499
499
. count ( ) ;
500
500
if num_pkgs == 0 {
@@ -503,7 +503,7 @@ fn print_lockfile_generation(
503
503
}
504
504
status_locking ( ws, num_pkgs) ?;
505
505
506
- for change in changes {
506
+ for change in changes. values ( ) {
507
507
if change. is_member . unwrap_or ( false ) {
508
508
continue ;
509
509
} ;
@@ -555,7 +555,7 @@ fn print_lockfile_sync(
555
555
) -> CargoResult < ( ) > {
556
556
let changes = PackageChange :: diff ( ws, previous_resolve, resolve) ;
557
557
let num_pkgs: usize = changes
558
- . iter ( )
558
+ . values ( )
559
559
. filter ( |change| change. kind . is_new ( ) && !change. is_member . unwrap_or ( false ) )
560
560
. count ( ) ;
561
561
if num_pkgs == 0 {
@@ -564,7 +564,7 @@ fn print_lockfile_sync(
564
564
}
565
565
status_locking ( ws, num_pkgs) ?;
566
566
567
- for change in changes {
567
+ for change in changes. values ( ) {
568
568
if change. is_member . unwrap_or ( false ) {
569
569
continue ;
570
570
} ;
@@ -611,13 +611,16 @@ fn print_lockfile_updates(
611
611
registry : & mut PackageRegistry < ' _ > ,
612
612
) -> CargoResult < ( ) > {
613
613
let changes = PackageChange :: diff ( ws, previous_resolve, resolve) ;
614
- let num_pkgs: usize = changes. iter ( ) . filter ( |change| change. kind . is_new ( ) ) . count ( ) ;
614
+ let num_pkgs: usize = changes
615
+ . values ( )
616
+ . filter ( |change| change. kind . is_new ( ) )
617
+ . count ( ) ;
615
618
if !precise {
616
619
status_locking ( ws, num_pkgs) ?;
617
620
}
618
621
619
622
let mut unchanged_behind = 0 ;
620
- for change in changes {
623
+ for change in changes. values ( ) {
621
624
let possibilities = if let Some ( query) = change. alternatives_query ( ) {
622
625
loop {
623
626
match registry. query_vec ( & query, QueryKind :: Exact ) {
@@ -804,17 +807,24 @@ struct PackageChange {
804
807
}
805
808
806
809
impl PackageChange {
807
- pub fn new ( ws : & Workspace < ' _ > , resolve : & Resolve ) -> Vec < Self > {
810
+ pub fn new ( ws : & Workspace < ' _ > , resolve : & Resolve ) -> IndexMap < PackageId , Self > {
808
811
let diff = PackageDiff :: new ( resolve) ;
809
812
Self :: with_diff ( diff, ws)
810
813
}
811
814
812
- pub fn diff ( ws : & Workspace < ' _ > , previous_resolve : & Resolve , resolve : & Resolve ) -> Vec < Self > {
815
+ pub fn diff (
816
+ ws : & Workspace < ' _ > ,
817
+ previous_resolve : & Resolve ,
818
+ resolve : & Resolve ,
819
+ ) -> IndexMap < PackageId , Self > {
813
820
let diff = PackageDiff :: diff ( previous_resolve, resolve) ;
814
821
Self :: with_diff ( diff, ws)
815
822
}
816
823
817
- fn with_diff ( diff : impl Iterator < Item = PackageDiff > , ws : & Workspace < ' _ > ) -> Vec < Self > {
824
+ fn with_diff (
825
+ diff : impl Iterator < Item = PackageDiff > ,
826
+ ws : & Workspace < ' _ > ,
827
+ ) -> IndexMap < PackageId , Self > {
818
828
let member_ids: HashSet < _ > = ws. members ( ) . map ( |p| p. package_id ( ) ) . collect ( ) ;
819
829
820
830
let mut changes = IndexMap :: new ( ) ;
@@ -876,7 +886,7 @@ impl PackageChange {
876
886
}
877
887
}
878
888
879
- changes. into_values ( ) . collect ( )
889
+ changes
880
890
}
881
891
882
892
/// For querying [`PackageRegistry`] for alternative versions to report to the user
0 commit comments