use crate::core::compiler::UnitInterner;
use crate::core::compiler::{CompileKind, CompileMode, RustcTargetData, Unit};
use crate::core::profiles::{Profiles, UnitFor};
-use crate::core::resolver::features::{FeaturesFor, ResolvedFeatures};
+use crate::core::resolver::features::{FeaturesFor, RequestedFeatures, ResolvedFeatures};
use crate::core::resolver::{HasDevUnits, ResolveOpts};
use crate::core::{Dependency, PackageId, PackageSet, Resolve, SourceId, Workspace};
use crate::ops::{self, Packages};
};
// dev_deps setting shouldn't really matter here.
let opts = ResolveOpts::new(
- /*dev_deps*/ false, &features, /*all_features*/ false,
- /*uses_default_features*/ false,
+ /*dev_deps*/ false,
+ RequestedFeatures::from_command_line(
+ &features, /*all_features*/ false, /*uses_default_features*/ false,
+ ),
);
let resolve = ops::resolve_ws_with_opts(
&std_ws,
}
}
- pub fn new(
- dev_deps: bool,
- features: &[String],
- all_features: bool,
- uses_default_features: bool,
- ) -> ResolveOpts {
- ResolveOpts {
- dev_deps,
- features: RequestedFeatures::from_command_line(
- features,
- all_features,
- uses_default_features,
- ),
- }
+ pub fn new(dev_deps: bool, features: RequestedFeatures) -> ResolveOpts {
+ ResolveOpts { dev_deps, features }
}
}
use crate::core::compiler::{CompileKind, CompileMode, CompileTarget, RustcTargetData, Unit};
use crate::core::compiler::{DefaultExecutor, Executor, UnitInterner};
use crate::core::profiles::{Profiles, UnitFor};
-use crate::core::resolver::features::{self, FeaturesFor};
+use crate::core::resolver::features::{self, FeaturesFor, RequestedFeatures};
use crate::core::resolver::{HasDevUnits, Resolve, ResolveOpts};
use crate::core::{FeatureValue, Package, PackageSet, Shell, Summary, Target};
use crate::core::{PackageId, PackageIdSpec, TargetKind, Workspace};
let specs = spec.to_package_id_specs(ws)?;
let dev_deps = ws.require_optional_deps() || filter.need_dev_deps(build_config.mode);
- let opts = ResolveOpts::new(dev_deps, features, all_features, !no_default_features);
+ let opts = ResolveOpts::new(
+ dev_deps,
+ RequestedFeatures::from_command_line(features, all_features, !no_default_features),
+ );
let has_dev_units = if filter.need_dev_deps(build_config.mode) {
HasDevUnits::Yes
} else {
use crate::core::compiler::RustcTargetData;
-use crate::core::resolver::{HasDevUnits, ResolveOpts};
+use crate::core::resolver::{features::RequestedFeatures, HasDevUnits, ResolveOpts};
use crate::core::{Shell, Workspace};
use crate::ops;
use crate::util::CargoResult;
let specs = options.compile_opts.spec.to_package_id_specs(ws)?;
let opts = ResolveOpts::new(
/*dev_deps*/ true,
- &options.compile_opts.features,
- options.compile_opts.all_features,
- !options.compile_opts.no_default_features,
+ RequestedFeatures::from_command_line(
+ &options.compile_opts.features,
+ options.compile_opts.all_features,
+ !options.compile_opts.no_default_features,
+ ),
);
let target_data = RustcTargetData::new(ws, &options.compile_opts.build_config.requested_kinds)?;
let ws_resolve = ops::resolve_ws_with_opts(
metadata_opts.all_features,
!metadata_opts.no_default_features,
);
- let resolve_opts = ResolveOpts::new(
- /*dev_deps*/ true,
- &metadata_opts.features,
- metadata_opts.all_features,
- !metadata_opts.no_default_features,
- );
+ let resolve_opts = ResolveOpts::new(/*dev_deps*/ true, requested_features.clone());
let force_all = if metadata_opts.filter_platforms.is_empty() {
crate::core::resolver::features::ForceAllTargets::Yes
} else {
opts.all_features,
!opts.no_default_features,
);
- let resolve_opts = ResolveOpts::new(
- /*dev_deps*/ true,
- &opts.features,
- opts.all_features,
- !opts.no_default_features,
- );
+ let resolve_opts = ResolveOpts::new(/*dev_deps*/ true, requested_features.clone());
let has_dev = if opts
.edge_kinds
.contains(&EdgeKind::Dep(DepKind::Development))