From: Eh2406 Date: Fri, 9 Mar 2018 15:07:59 +0000 (-0500) Subject: Dependency.name to InternedString X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~53^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=85f96a9919d75dae83430e1fc5e5ba732a0939c6;p=cargo.git Dependency.name to InternedString --- diff --git a/src/cargo/core/dependency.rs b/src/cargo/core/dependency.rs index e80113d10..a85c83adb 100644 --- a/src/cargo/core/dependency.rs +++ b/src/cargo/core/dependency.rs @@ -7,6 +7,7 @@ use semver::ReqParseError; use serde::ser; use core::{SourceId, Summary, PackageId}; +use core::interning::InternedString; use util::{Cfg, CfgExpr, Config}; use util::errors::{CargoResult, CargoResultExt, CargoError}; @@ -20,7 +21,7 @@ pub struct Dependency { /// The data underlying a Dependency. #[derive(PartialEq, Eq, Hash, Ord, PartialOrd, Clone, Debug)] struct Inner { - name: String, + name: InternedString, source_id: SourceId, registry_id: Option, req: VersionReq, @@ -63,7 +64,7 @@ impl ser::Serialize for Dependency { where S: ser::Serializer, { SerializedDependency { - name: self.name(), + name: &*self.name(), source: self.source_id(), req: self.version_req().to_string(), kind: self.kind(), @@ -174,7 +175,7 @@ impl Dependency { pub fn new_override(name: &str, source_id: &SourceId) -> Dependency { Dependency { inner: Rc::new(Inner { - name: name.to_string(), + name: InternedString::new(name), source_id: source_id.clone(), registry_id: None, req: VersionReq::any(), @@ -194,8 +195,8 @@ impl Dependency { &self.inner.req } - pub fn name(&self) -> &str { - &self.inner.name + pub fn name(&self) -> InternedString { + self.inner.name } pub fn source_id(&self) -> &SourceId { @@ -329,13 +330,13 @@ impl Dependency { /// Returns true if the package (`sum`) can fulfill this dependency request. pub fn matches_ignoring_source(&self, sum: &Summary) -> bool { - self.name() == &*sum.package_id().name() && + self.name() == sum.package_id().name() && self.version_req().matches(sum.package_id().version()) } /// Returns true if the package (`id`) can fulfill this dependency request. pub fn matches_id(&self, id: &PackageId) -> bool { - self.inner.name == &*id.name() && + self.inner.name == id.name() && (self.inner.only_match_name || (self.inner.req.matches(id.version()) && &self.inner.source_id == id.source_id())) } diff --git a/src/cargo/core/registry.rs b/src/cargo/core/registry.rs index f7ab320c9..211f90863 100644 --- a/src/cargo/core/registry.rs +++ b/src/cargo/core/registry.rs @@ -317,7 +317,7 @@ impl<'cfg> PackageRegistry<'cfg> { -> CargoResult> { for s in self.overrides.iter() { let src = self.sources.get_mut(s).unwrap(); - let dep = Dependency::new_override(dep.name(), s); + let dep = Dependency::new_override(&*dep.name(), s); let mut results = src.query_vec(&dep)?; if !results.is_empty() { return Ok(Some(results.remove(0))) @@ -568,7 +568,7 @@ fn lock(locked: &LockedMap, // all known locked packages to see if they match this dependency. // If anything does then we lock it to that and move on. let v = locked.get(dep.source_id()).and_then(|map| { - map.get(dep.name()) + map.get(&*dep.name()) }).and_then(|vec| { vec.iter().find(|&&(ref id, _)| dep.matches_id(id)) }); @@ -584,7 +584,7 @@ fn lock(locked: &LockedMap, let v = patches.get(dep.source_id().url()).map(|vec| { let dep2 = dep.clone(); let mut iter = vec.iter().filter(move |p| { - dep2.name() == &*p.name() && + dep2.name() == p.name() && dep2.version_req().matches(p.version()) }); (iter.next(), iter) diff --git a/src/cargo/core/resolver/mod.rs b/src/cargo/core/resolver/mod.rs index c1023566a..2a055d64e 100644 --- a/src/cargo/core/resolver/mod.rs +++ b/src/cargo/core/resolver/mod.rs @@ -1044,7 +1044,7 @@ fn activation_error(cx: &Context, for &(p, r) in links_errors.iter() { if let ConflictReason::Links(ref link) = *r { msg.push_str("\n\nthe package `"); - msg.push_str(dep.name()); + msg.push_str(&*dep.name()); msg.push_str("` links to the native library `"); msg.push_str(link); msg.push_str("`, but it conflicts with a previous package which links to `"); @@ -1061,11 +1061,11 @@ fn activation_error(cx: &Context, msg.push_str("\n\nthe package `"); msg.push_str(&*p.name()); msg.push_str("` depends on `"); - msg.push_str(dep.name()); + msg.push_str(&*dep.name()); msg.push_str("`, with features: `"); msg.push_str(features); msg.push_str("` but `"); - msg.push_str(dep.name()); + msg.push_str(&*dep.name()); msg.push_str("` does not have these features.\n"); } // p == parent so the full path is redundant. @@ -1082,7 +1082,7 @@ fn activation_error(cx: &Context, } msg.push_str("\n\nfailed to select a version for `"); - msg.push_str(dep.name()); + msg.push_str(&*dep.name()); msg.push_str("` which could resolve this conflict"); return format_err!("{}", msg) @@ -1274,7 +1274,7 @@ fn build_requirements<'a, 'b: 'a>(s: &'a Summary, method: &'b Method) reqs.require_feature(key)?; } for dep in s.dependencies().iter().filter(|d| d.is_optional()) { - reqs.require_dependency(dep.name()); + reqs.require_dependency(dep.name().to_inner()); } } Method::Required { features: requested_features, .. } => { @@ -1365,7 +1365,7 @@ impl Context { } fn prev_active(&self, dep: &Dependency) -> &[Summary] { - self.activations.get(&(InternedString::new(dep.name()), dep.source_id().clone())) + self.activations.get(&(dep.name(), dep.source_id().clone())) .map(|v| &v[..]) .unwrap_or(&[]) } @@ -1397,12 +1397,12 @@ impl Context { // Next, collect all actually enabled dependencies and their features. for dep in deps { // Skip optional dependencies, but not those enabled through a feature - if dep.is_optional() && !reqs.deps.contains_key(dep.name()) { + if dep.is_optional() && !reqs.deps.contains_key(&*dep.name()) { continue } // So we want this dependency. Move the features we want from `feature_deps` // to `ret`. - let base = reqs.deps.remove(dep.name()).unwrap_or((false, vec![])); + let base = reqs.deps.remove(&*dep.name()).unwrap_or((false, vec![])); if !dep.is_optional() && base.0 { self.warnings.push( format!("Package `{}` does not have feature `{}`. It has a required dependency \ diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index 973e6cfe4..3fc2b1a6b 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -32,7 +32,7 @@ impl Summary { features: BTreeMap>, links: Option) -> CargoResult { for dep in dependencies.iter() { - if features.get(dep.name()).is_some() { + if features.get(&*dep.name()).is_some() { bail!("Features and dependencies cannot have the \ same name: `{}`", dep.name()) } @@ -47,7 +47,7 @@ impl Summary { let dep = parts.next().unwrap(); let is_reexport = parts.next().is_some(); if !is_reexport && features.get(dep).is_some() { continue } - match dependencies.iter().find(|d| d.name() == dep) { + match dependencies.iter().find(|d| &*d.name() == dep) { Some(d) => { if d.is_optional() || is_reexport { continue } bail!("Feature `{}` depends on `{}` which is not an \ diff --git a/src/cargo/ops/cargo_rustc/context.rs b/src/cargo/ops/cargo_rustc/context.rs index 9944df7e2..9f7766e0e 100644 --- a/src/cargo/ops/cargo_rustc/context.rs +++ b/src/cargo/ops/cargo_rustc/context.rs @@ -782,7 +782,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> { let deps = self.resolve.deps(id); let mut ret = deps.filter(|dep| { unit.pkg.dependencies().iter().filter(|d| { - d.name() == &*dep.name() && d.version_req().matches(dep.version()) + d.name() == dep.name() && d.version_req().matches(dep.version()) }).any(|d| { // If this target is a build command, then we only want build // dependencies, otherwise we want everything *other than* build @@ -806,7 +806,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> { // If the dependency is optional, then we're only activating it // if the corresponding feature was activated - if d.is_optional() && !self.resolve.features(id).contains(d.name()) { + if d.is_optional() && !self.resolve.features(id).contains(&*d.name()) { return false; } @@ -915,7 +915,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> { fn doc_deps(&self, unit: &Unit<'a>) -> CargoResult>> { let deps = self.resolve.deps(unit.pkg.package_id()).filter(|dep| { unit.pkg.dependencies().iter().filter(|d| { - d.name() == &*dep.name() + d.name() == dep.name() }).any(|dep| { match dep.kind() { DepKind::Normal => self.dep_platform_activated(dep, diff --git a/src/cargo/sources/registry/index.rs b/src/cargo/sources/registry/index.rs index 43306be14..87a964710 100644 --- a/src/cargo/sources/registry/index.rs +++ b/src/cargo/sources/registry/index.rs @@ -169,7 +169,7 @@ impl<'cfg> RegistryIndex<'cfg> { f: &mut FnMut(Summary)) -> CargoResult<()> { let source_id = self.source_id.clone(); - let summaries = self.summaries(dep.name(), load)?; + let summaries = self.summaries(&*dep.name(), load)?; let summaries = summaries.iter().filter(|&&(_, yanked)| { dep.source_id().precise().is_some() || !yanked }).map(|s| s.0.clone()); @@ -180,7 +180,7 @@ impl<'cfg> RegistryIndex<'cfg> { // version requested (argument to `--precise`). let summaries = summaries.filter(|s| { match source_id.precise() { - Some(p) if p.starts_with(dep.name()) && + Some(p) if p.starts_with(&*dep.name()) && p[dep.name().len()..].starts_with('=') => { let vers = &p[dep.name().len() + 1..]; s.version().to_string() == vers