@@ -616,10 +616,10 @@ fn get_latest_dependency(
616
616
} ) ?;
617
617
618
618
if gctx. cli_unstable ( ) . msrv_policy && honor_rust_version {
619
- let req_msrv = spec
619
+ let ( req_msrv, is_msrv ) = spec
620
620
. rust_version ( )
621
621
. cloned ( )
622
- . map ( CargoResult :: Ok )
622
+ . map ( |msrv| CargoResult :: Ok ( ( msrv . clone ( ) , true ) ) )
623
623
. unwrap_or_else ( || {
624
624
let rustc = gctx. load_global_rustc ( None ) ?;
625
625
@@ -633,7 +633,7 @@ fn get_latest_dependency(
633
633
build : None ,
634
634
} )
635
635
. unwrap ( ) ;
636
- Ok ( untagged_version)
636
+ Ok ( ( untagged_version, false ) )
637
637
} ) ?;
638
638
639
639
let msrvs = possibilities
@@ -652,21 +652,36 @@ fn get_latest_dependency(
652
652
let latest_msrv = latest
653
653
. rust_version ( )
654
654
. expect ( "as `None` are compatible, we can't be here" ) ;
655
- anyhow:: format_err!(
656
- "\
655
+ if is_msrv {
656
+ anyhow:: format_err!(
657
+ "\
658
+ no version of crate `{dep_name}` can maintain {name}'s rust-version of {req_msrv}
659
+ help: pass `--ignore-rust-version` to select {dep_name}@{latest_version} which requires rustc {latest_msrv}"
660
+ )
661
+ } else {
662
+ anyhow:: format_err!(
663
+ "\
657
664
no version of crate `{dep_name}` can maintain {name}'s rust-version of {req_msrv}
658
665
help: pass `--ignore-rust-version` to select {dep_name}@{latest_version} which requires rustc {latest_msrv}"
659
- )
666
+ )
667
+ }
660
668
} ) ?;
661
669
662
670
if latest_msrv. version ( ) < latest. version ( ) {
663
671
let latest_version = latest. version ( ) ;
664
672
let latest_rust_version = latest. rust_version ( ) . unwrap ( ) ;
665
673
let name = spec. name ( ) ;
666
- gctx. shell ( ) . warn ( format_args ! (
674
+ if is_msrv {
675
+ gctx. shell ( ) . warn ( format_args ! (
676
+ "\
677
+ ignoring {dependency}@{latest_version} (which requires rustc {latest_rust_version}) to maintain {name}'s rust-version of {req_msrv}",
678
+ ) ) ?;
679
+ } else {
680
+ gctx. shell ( ) . warn ( format_args ! (
667
681
"\
668
682
ignoring {dependency}@{latest_version} (which requires rustc {latest_rust_version}) to maintain {name}'s rust-version of {req_msrv}",
669
683
) ) ?;
684
+ }
670
685
671
686
latest = latest_msrv;
672
687
}
0 commit comments