@@ -430,7 +430,11 @@ pub fn resolve(
430430 warnings : RcList :: new ( ) ,
431431 } ;
432432 let _p = profile:: start ( "resolving" ) ;
433- let mut registry = RegistryQueryer :: new ( registry, replacements, try_to_use) ;
433+ let minimal_versions = match config {
434+ Some ( config) => config. cli_unstable ( ) . minimal_versions ,
435+ None => false ,
436+ } ;
437+ let mut registry = RegistryQueryer :: new ( registry, replacements, try_to_use, minimal_versions) ;
434438 let cx = activate_deps_loop ( cx, & mut registry, summaries, config) ?;
435439
436440 let mut resolve = Resolve {
@@ -683,19 +687,22 @@ struct RegistryQueryer<'a> {
683687 try_to_use : & ' a HashSet < & ' a PackageId > ,
684688 // TODO: with nll the Rc can be removed
685689 cache : HashMap < Dependency , Rc < Vec < Candidate > > > ,
690+ minimal_versions : bool ,
686691}
687692
688693impl < ' a > RegistryQueryer < ' a > {
689694 fn new (
690695 registry : & ' a mut Registry ,
691696 replacements : & ' a [ ( PackageIdSpec , Dependency ) ] ,
692697 try_to_use : & ' a HashSet < & ' a PackageId > ,
698+ minimal_versions : bool ,
693699 ) -> Self {
694700 RegistryQueryer {
695701 registry,
696702 replacements,
697703 cache : HashMap :: new ( ) ,
698704 try_to_use,
705+ minimal_versions,
699706 }
700707 }
701708
@@ -797,7 +804,10 @@ impl<'a> RegistryQueryer<'a> {
797804 let b_in_previous = self . try_to_use . contains ( b. summary . package_id ( ) ) ;
798805 let a = ( a_in_previous, a. summary . version ( ) ) ;
799806 let b = ( b_in_previous, b. summary . version ( ) ) ;
800- a. cmp ( & b) . reverse ( )
807+ match self . minimal_versions {
808+ true => a. cmp ( & b) ,
809+ false => a. cmp ( & b) . reverse ( ) ,
810+ }
801811 } ) ;
802812
803813 let out = Rc :: new ( ret) ;
0 commit comments