Skip to content

Commit

Permalink
Use BTreeSet for version set rather than vector
Browse files Browse the repository at this point in the history
  • Loading branch information
schuster committed Jul 6, 2016
1 parent 2d7adcf commit c7204e3
Showing 1 changed file with 6 additions and 17 deletions.
23 changes: 6 additions & 17 deletions src/cargo/ops/resolve.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::collections::{HashMap, HashSet};
use std::collections::{BTreeSet, HashMap, HashSet};

use semver;

Expand Down Expand Up @@ -181,17 +181,13 @@ fn warn_if_multiple_versions(resolved: &Resolve,

for ((package_name, package_source), versions) in package_version_map {
let old_version_count = previous_version_map.get(&(package_name, package_source))
.unwrap_or(&vec![]).len();
.unwrap_or(&BTreeSet::new()).len();

if versions.len() > 1 && old_version_count <= 1 {
let mut copied_versions = versions.clone();
// Sort the versions so that test results are deterministic
copied_versions.sort();

try!(config.shell().warn(format!(
"using multiple versions of crate \"{}\"\nversions: {}",
package_name,
copied_versions.into_iter()
versions.into_iter()
.map(|v| format!("v{}", v))
.collect::<Vec<String>>()
.join(", "))));
Expand All @@ -201,20 +197,13 @@ fn warn_if_multiple_versions(resolved: &Resolve,
Ok(())
}

fn build_version_map(resolved: &Resolve) -> HashMap<(&str, &SourceId), Vec<&semver::Version>> {
let mut package_version_map : HashMap<(&str, &SourceId), Vec<&semver::Version>> =
fn build_version_map(resolved: &Resolve) -> HashMap<(&str, &SourceId), BTreeSet<&semver::Version>> {
let mut package_version_map : HashMap<(&str, &SourceId), BTreeSet<&semver::Version>> =
HashMap::new();

for package_id in resolved.iter() {
let key = (package_id.name(), package_id.source_id());

if let Some(found_versions) = package_version_map.get_mut(&key) {
found_versions.push(package_id.version());
}

if !package_version_map.contains_key(&key) {
package_version_map.insert(key, vec![package_id.version()]);
}
package_version_map.entry(key).or_insert(BTreeSet::new()).insert(package_id.version());
}

package_version_map
Expand Down

0 comments on commit c7204e3

Please sign in to comment.