}
}
-fn encodable_package_id(id: &PackageId) -> EncodablePackageId {
+pub fn encodable_package_id(id: &PackageId) -> EncodablePackageId {
EncodablePackageId {
name: id.name().to_string(),
version: id.version().to_string(),
use self::types::{ActivateError, ActivateResult, Candidate, ConflictReason, DepsFrame, GraphNode};
use self::types::{RcVecIter, RegistryQueryer};
-pub use self::encode::{EncodableDependency, EncodablePackageId, EncodableResolve};
+pub use self::encode::{EncodableDependency, EncodablePackageId, EncodableResolve, encodable_package_id};
pub use self::encode::{Metadata, WorkspaceResolve};
pub use self::resolve::{Deps, DepsNotReplaced, Resolve};
pub use self::types::Method;
Ok(resolve)
}
-fn duplicate_pkg_names(resolve: &Resolve) -> Vec<&'static str> {
+fn duplicate_pkgs(resolve: &Resolve) -> Vec<&'static str> {
let mut unique_names = HashSet::new();
let mut result = HashSet::new();
for pkg_id in resolve.iter() {
- if !unique_names.insert(pkg_id.name()) {
+ let mut encodable_pkd_id = resolver::encodable_package_id(pkg_id);
+ if !unique_names.insert(encodable_pkd_id) {
result.insert(pkg_id.name().as_str());
}
}
result.into_iter().collect()
}
-fn check_duplicate_pkg_names(resolve: &Resolve) -> Result<(), Internal> {
- let names = duplicate_pkg_names(resolve);
+fn check_duplicate_pkgs(resolve: &Resolve) -> Result<(), Internal> {
+ let names = duplicate_pkgs(resolve);
if names.is_empty() {
Ok(())
} else {
Ok(s)
});
- check_duplicate_pkg_names(resolve).chain_err(|| format!("failed to generate lock file"))?;
+ check_duplicate_pkgs(resolve).chain_err(|| format!("failed to generate lock file"))?;
let toml = toml::Value::try_from(WorkspaceResolve { ws, resolve }).unwrap();