From 4966f5394fbd562db1c7f069018a4e5781eadb7e Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Thu, 5 Apr 2018 16:23:11 +0200 Subject: [PATCH] Make a dependencies map while building feature map --- src/cargo/core/summary.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index a824233f9..d51db6b88 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -1,4 +1,4 @@ -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashMap}; use std::mem; use std::rc::Rc; @@ -133,6 +133,11 @@ fn build_feature_map( dependencies: &[Dependency], ) -> CargoResult { use self::FeatureValue::*; + let dep_map: HashMap<_, _> = dependencies + .iter() + .map(|d| (d.name().as_str(), d)) + .collect(); + let mut map = BTreeMap::new(); for (feature, list) in features.iter() { let mut values = vec![]; @@ -148,7 +153,7 @@ fn build_feature_map( match val { Feature(_) => None, Crate(ref dep_name) | CrateFeature(ref dep_name, _) => { - dependencies.iter().find(|d| d.name() == *dep_name) + dep_map.get(dep_name.as_str()) } } }; -- 2.30.2