@@ -87,7 +87,7 @@ pub struct Workspace<'cfg> {
87
87
ignore_lock : bool ,
88
88
89
89
/// The resolver behavior specified with the `resolver` field.
90
- resolve_behavior : ResolveBehavior ,
90
+ resolve_behavior : Option < ResolveBehavior > ,
91
91
}
92
92
93
93
// Separate structure for tracking loaded packages (to avoid loading anything
@@ -150,8 +150,7 @@ impl<'cfg> Workspace<'cfg> {
150
150
ws. resolve_behavior = match ws. root_maybe ( ) {
151
151
MaybePackage :: Package ( p) => p. manifest ( ) . resolve_behavior ( ) ,
152
152
MaybePackage :: Virtual ( vm) => vm. resolve_behavior ( ) ,
153
- }
154
- . unwrap_or ( ResolveBehavior :: V1 ) ;
153
+ } ;
155
154
ws. validate ( ) ?;
156
155
Ok ( ws)
157
156
}
@@ -173,7 +172,7 @@ impl<'cfg> Workspace<'cfg> {
173
172
require_optional_deps : true ,
174
173
loaded_packages : RefCell :: new ( HashMap :: new ( ) ) ,
175
174
ignore_lock : false ,
176
- resolve_behavior : ResolveBehavior :: V1 ,
175
+ resolve_behavior : None ,
177
176
}
178
177
}
179
178
@@ -186,7 +185,7 @@ impl<'cfg> Workspace<'cfg> {
186
185
let mut ws = Workspace :: new_default ( current_manifest, config) ;
187
186
ws. root_manifest = Some ( root_path. join ( "Cargo.toml" ) ) ;
188
187
ws. target_dir = config. target_dir ( ) ?;
189
- ws. resolve_behavior = manifest. resolve_behavior ( ) . unwrap_or ( ResolveBehavior :: V1 ) ;
188
+ ws. resolve_behavior = manifest. resolve_behavior ( ) ;
190
189
ws. packages
191
190
. packages
192
191
. insert ( root_path, MaybePackage :: Virtual ( manifest) ) ;
@@ -214,10 +213,7 @@ impl<'cfg> Workspace<'cfg> {
214
213
let mut ws = Workspace :: new_default ( package. manifest_path ( ) . to_path_buf ( ) , config) ;
215
214
ws. is_ephemeral = true ;
216
215
ws. require_optional_deps = require_optional_deps;
217
- ws. resolve_behavior = package
218
- . manifest ( )
219
- . resolve_behavior ( )
220
- . unwrap_or ( ResolveBehavior :: V1 ) ;
216
+ ws. resolve_behavior = package. manifest ( ) . resolve_behavior ( ) ;
221
217
let key = ws. current_manifest . parent ( ) . unwrap ( ) ;
222
218
let id = package. package_id ( ) ;
223
219
let package = MaybePackage :: Package ( package) ;
@@ -594,7 +590,7 @@ impl<'cfg> Workspace<'cfg> {
594
590
}
595
591
596
592
pub fn resolve_behavior ( & self ) -> ResolveBehavior {
597
- self . resolve_behavior
593
+ self . resolve_behavior . unwrap_or ( ResolveBehavior :: V1 )
598
594
}
599
595
600
596
pub fn allows_unstable_package_features ( & self ) -> bool {
@@ -796,11 +792,9 @@ impl<'cfg> Workspace<'cfg> {
796
792
if !manifest. patch ( ) . is_empty ( ) {
797
793
emit_warning ( "patch" ) ?;
798
794
}
799
- if let Some ( behavior ) = manifest . resolve_behavior ( ) {
795
+ if manifest . resolve_behavior ( ) != self . resolve_behavior {
800
796
// Only warn if they don't match.
801
- if behavior != self . resolve_behavior {
802
- emit_warning ( "resolver" ) ?;
803
- }
797
+ emit_warning ( "resolver" ) ?;
804
798
}
805
799
}
806
800
}
0 commit comments