diff --git a/src/cargo/core/resolver/encode.rs b/src/cargo/core/resolver/encode.rs index fc2c2773786..1f79fbdc477 100644 --- a/src/cargo/core/resolver/encode.rs +++ b/src/cargo/core/resolver/encode.rs @@ -96,15 +96,18 @@ impl EncodableResolve { g }; - let replacements: HashMap<_, _> = try!(live_pkgs.values() - .filter_map(|&(ref id, pkg)| pkg.replace.as_ref().and_then(|replace| { - assert!(pkg.dependencies.is_none()); - match lookup_id(replace) { - Err(e) => Some(Err(e)), - Ok(None) => None, - Ok(Some(replace)) => Some(Ok((id.clone(), replace))) + let replacements = { + let mut replacements = HashMap::new(); + for &(ref id, ref pkg) in live_pkgs.values() { + if let Some(ref replace) = pkg.replace { + assert!(pkg.dependencies.is_none()); + if let Some(replace_id) = try!(lookup_id(replace)) { + replacements.insert(id.clone(), replace_id); + } } - })).collect()); + } + replacements + }; let mut metadata = self.metadata.unwrap_or(BTreeMap::new());