@@ -7,6 +7,7 @@ use crate::core::{PackageId, PackageIdSpec, PackageIdSpecQuery};
7
7
use crate :: core:: { Resolve , SourceId , Workspace } ;
8
8
use crate :: ops;
9
9
use crate :: sources:: source:: QueryKind ;
10
+ use crate :: sources:: IndexSummary ;
10
11
use crate :: util:: cache_lock:: CacheLockMode ;
11
12
use crate :: util:: context:: GlobalContext ;
12
13
use crate :: util:: toml_mut:: dependency:: { MaybeWorkspace , Source } ;
@@ -512,17 +513,7 @@ fn print_lockfile_generation(
512
513
} ;
513
514
514
515
for package in diff. added . iter ( ) {
515
- let latest = if !possibilities. is_empty ( ) {
516
- possibilities
517
- . iter ( )
518
- . map ( |s| s. as_summary ( ) )
519
- . filter ( |s| is_latest ( s. version ( ) , package. version ( ) ) )
520
- . map ( |s| s. version ( ) . clone ( ) )
521
- . max ( )
522
- . map ( format_latest)
523
- } else {
524
- None
525
- } ;
516
+ let latest = report_latest ( & possibilities, * package) ;
526
517
527
518
if let Some ( latest) = latest {
528
519
ws. gctx ( ) . shell ( ) . status_with_color (
@@ -602,18 +593,7 @@ fn print_lockfile_sync(
602
593
}
603
594
} else {
604
595
for package in diff. added . iter ( ) {
605
- let latest = if !possibilities. is_empty ( ) {
606
- possibilities
607
- . iter ( )
608
- . map ( |s| s. as_summary ( ) )
609
- . filter ( |s| is_latest ( s. version ( ) , package. version ( ) ) )
610
- . map ( |s| s. version ( ) . clone ( ) )
611
- . max ( )
612
- . map ( format_latest)
613
- } else {
614
- None
615
- }
616
- . unwrap_or_default ( ) ;
596
+ let latest = report_latest ( & possibilities, * package) . unwrap_or_default ( ) ;
617
597
618
598
ws. gctx ( ) . shell ( ) . status_with_color (
619
599
"Adding" ,
@@ -656,18 +636,7 @@ fn print_lockfile_updates(
656
636
} ;
657
637
658
638
if let Some ( ( removed, added) ) = diff. change ( ) {
659
- let latest = if !possibilities. is_empty ( ) {
660
- possibilities
661
- . iter ( )
662
- . map ( |s| s. as_summary ( ) )
663
- . filter ( |s| is_latest ( s. version ( ) , added. version ( ) ) )
664
- . map ( |s| s. version ( ) . clone ( ) )
665
- . max ( )
666
- . map ( format_latest)
667
- } else {
668
- None
669
- }
670
- . unwrap_or_default ( ) ;
639
+ let latest = report_latest ( & possibilities, * added) . unwrap_or_default ( ) ;
671
640
672
641
let msg = if removed. source_id ( ) . is_git ( ) {
673
642
format ! (
@@ -700,18 +669,7 @@ fn print_lockfile_updates(
700
669
) ?;
701
670
}
702
671
for package in diff. added . iter ( ) {
703
- let latest = if !possibilities. is_empty ( ) {
704
- possibilities
705
- . iter ( )
706
- . map ( |s| s. as_summary ( ) )
707
- . filter ( |s| is_latest ( s. version ( ) , package. version ( ) ) )
708
- . map ( |s| s. version ( ) . clone ( ) )
709
- . max ( )
710
- . map ( format_latest)
711
- } else {
712
- None
713
- }
714
- . unwrap_or_default ( ) ;
672
+ let latest = report_latest ( & possibilities, * package) . unwrap_or_default ( ) ;
715
673
716
674
ws. gctx ( ) . shell ( ) . status_with_color (
717
675
"Adding" ,
@@ -721,17 +679,7 @@ fn print_lockfile_updates(
721
679
}
722
680
}
723
681
for package in & diff. unchanged {
724
- let latest = if !possibilities. is_empty ( ) {
725
- possibilities
726
- . iter ( )
727
- . map ( |s| s. as_summary ( ) )
728
- . filter ( |s| is_latest ( s. version ( ) , package. version ( ) ) )
729
- . map ( |s| s. version ( ) . clone ( ) )
730
- . max ( )
731
- . map ( format_latest)
732
- } else {
733
- None
734
- } ;
682
+ let latest = report_latest ( & possibilities, * package) ;
735
683
736
684
if let Some ( latest) = latest {
737
685
unchanged_behind += 1 ;
@@ -795,6 +743,16 @@ fn status_locking(ws: &Workspace<'_>, num_pkgs: usize) -> CargoResult<()> {
795
743
Ok ( ( ) )
796
744
}
797
745
746
+ fn report_latest ( possibilities : & [ IndexSummary ] , package : PackageId ) -> Option < String > {
747
+ possibilities
748
+ . iter ( )
749
+ . map ( |s| s. as_summary ( ) )
750
+ . filter ( |s| is_latest ( s. version ( ) , package. version ( ) ) )
751
+ . map ( |s| s. version ( ) . clone ( ) )
752
+ . max ( )
753
+ . map ( format_latest)
754
+ }
755
+
798
756
fn format_latest ( version : semver:: Version ) -> String {
799
757
let warn = style:: WARN ;
800
758
format ! ( " {warn}(latest: v{version}){warn:#}" )
0 commit comments