From: Dirkjan Ochtman Date: Wed, 4 Oct 2017 18:24:51 +0000 (+0200) Subject: Move logic for walking over dependent features around X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~5^2~16^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=8890568091f692061640687978a420793c7e49f4;p=cargo.git Move logic for walking over dependent features around --- diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index 45172a1dd..28740cb22 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -907,11 +907,11 @@ impl<'r> Requirements<'r> { self.deps.entry(pkg).or_insert((false, Vec::new())).0 = true; } - fn require_feature(&mut self, feat: &'r str, recursive: &'r Vec) -> CargoResult<()> { + fn require_feature(&mut self, feat: &'r str) -> CargoResult<()> { if self.seen(feat) { return Ok(()); } - for f in recursive { + for f in self.summary.features().get(feat).expect("must be a valid feature") { if f == &feat { bail!("Cyclic feature dependency: feature `{}` depends on itself", feat); } @@ -935,13 +935,10 @@ impl<'r> Requirements<'r> { self.require_crate_feature(feat_or_package, feat); } None => { - match self.summary.features().get(feat_or_package) { - Some(recursive) => { - self.require_feature(feat_or_package, recursive)?; - } - None => { - self.require_dependency(feat_or_package); - } + if self.summary.features().contains_key(feat_or_package) { + self.require_feature(feat_or_package)?; + } else { + self.require_dependency(feat_or_package); } } }