From: Dirkjan Ochtman Date: Mon, 2 Oct 2017 16:06:32 +0000 (+0200) Subject: Move shared logic into separated methods X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~5^2~16^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=827887624b20adc2ecb21857000e2d0c204eb0e5;p=cargo.git Move shared logic into separated methods --- diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index fd16ccf13..45172a1dd 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -901,10 +901,16 @@ impl<'r> Requirements<'r> { } fn require_dependency(&mut self, pkg: &'r str) { + if self.seen(pkg) { + return; + } self.deps.entry(pkg).or_insert((false, Vec::new())).0 = true; } fn require_feature(&mut self, feat: &'r str, recursive: &'r Vec) -> CargoResult<()> { + if self.seen(feat) { + return Ok(()); + } for f in recursive { if f == &feat { bail!("Cyclic feature dependency: feature `{}` depends on itself", feat); @@ -929,17 +935,12 @@ impl<'r> Requirements<'r> { self.require_crate_feature(feat_or_package, feat); } None => { - let feat = feat_or_package; - if self.seen(feat) { - return Ok(()); - } - match self.summary.features().get(feat) { + match self.summary.features().get(feat_or_package) { Some(recursive) => { - self.require_feature(feat, recursive)?; + self.require_feature(feat_or_package, recursive)?; } None => { - // This is a dependency, mark it as explicitly requested. - self.require_dependency(feat); + self.require_dependency(feat_or_package); } } }