From: Eh2406 Date: Fri, 9 Mar 2018 16:47:10 +0000 (-0500) Subject: delay calls to `to_inner` X-Git-Tag: archive/raspbian/0.35.0-2+rpi1~3^2^2^2^2^2^2^2~22^2~2^2~53^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1fd3496a7c046da83aadd434e9c0fe1207cee6b5;p=cargo.git delay calls to `to_inner` --- diff --git a/src/cargo/core/manifest.rs b/src/cargo/core/manifest.rs index f247b2a51..739eab5c5 100644 --- a/src/cargo/core/manifest.rs +++ b/src/cargo/core/manifest.rs @@ -10,6 +10,7 @@ use url::Url; use core::{Dependency, PackageId, Summary, SourceId, PackageIdSpec}; use core::{WorkspaceConfig, Epoch, Features, Feature}; +use core::interning::InternedString; use util::Config; use util::toml::TomlManifest; use util::errors::*; @@ -301,7 +302,7 @@ impl Manifest { pub fn exclude(&self) -> &[String] { &self.exclude } pub fn include(&self) -> &[String] { &self.include } pub fn metadata(&self) -> &ManifestMetadata { &self.metadata } - pub fn name(&self) -> &str { self.package_id().name().to_inner() } + pub fn name(&self) -> InternedString { self.package_id().name() } pub fn package_id(&self) -> &PackageId { self.summary.package_id() } pub fn summary(&self) -> &Summary { &self.summary } pub fn targets(&self) -> &[Target] { &self.targets } diff --git a/src/cargo/core/package.rs b/src/cargo/core/package.rs index 19c95e5fc..6fdc1f1ef 100644 --- a/src/cargo/core/package.rs +++ b/src/cargo/core/package.rs @@ -11,6 +11,7 @@ use lazycell::LazyCell; use core::{Dependency, Manifest, PackageId, SourceId, Target}; use core::{Summary, SourceMap}; +use core::interning::InternedString; use ops; use util::{Config, internal, lev_distance}; use util::errors::{CargoResult, CargoResultExt}; @@ -95,7 +96,7 @@ impl Package { /// Get the path to the manifest pub fn manifest_path(&self) -> &Path { &self.manifest_path } /// Get the name of the package - pub fn name(&self) -> &str { self.package_id().name().to_inner() } + pub fn name(&self) -> InternedString { self.package_id().name() } /// Get the PackageId object for the package (fully defines a package) pub fn package_id(&self) -> &PackageId { self.manifest.package_id() } /// Get the root folder of the package diff --git a/src/cargo/core/registry.rs b/src/cargo/core/registry.rs index 211f90863..56f6eed85 100644 --- a/src/cargo/core/registry.rs +++ b/src/cargo/core/registry.rs @@ -519,7 +519,7 @@ fn lock(locked: &LockedMap, patches: &HashMap>, summary: Summary) -> Summary { let pair = locked.get(summary.source_id()).and_then(|map| { - map.get(summary.name()) + map.get(&*summary.name()) }).and_then(|vec| { vec.iter().find(|&&(ref id, _)| id == summary.package_id()) }); diff --git a/src/cargo/core/summary.rs b/src/cargo/core/summary.rs index 3fc2b1a6b..31aab456a 100644 --- a/src/cargo/core/summary.rs +++ b/src/cargo/core/summary.rs @@ -78,7 +78,7 @@ impl Summary { } pub fn package_id(&self) -> &PackageId { &self.inner.package_id } - pub fn name(&self) -> &str { self.package_id().name().to_inner() } + pub fn name(&self) -> InternedString { self.package_id().name() } pub fn version(&self) -> &Version { self.package_id().version() } pub fn source_id(&self) -> &SourceId { self.package_id().source_id() } pub fn dependencies(&self) -> &[Dependency] { &self.inner.dependencies } diff --git a/src/cargo/ops/cargo_doc.rs b/src/cargo/ops/cargo_doc.rs index d747b42d0..ed19b6240 100644 --- a/src/cargo/ops/cargo_doc.rs +++ b/src/cargo/ops/cargo_doc.rs @@ -54,7 +54,7 @@ pub fn doc(ws: &Workspace, options: &DocOptions) -> CargoResult<()> { bail!("Passing multiple packages and `open` is not supported.\n\ Please re-run this command with `-p ` where `` \ is one of the following:\n {}", - pkgs.iter().map(|p| p.name()).collect::>().join("\n ")); + pkgs.iter().map(|p| p.name().to_inner()).collect::>().join("\n ")); } else if pkgs.len() == 1 { pkgs[0].name().replace("-", "_") } else { diff --git a/src/cargo/ops/cargo_install.rs b/src/cargo/ops/cargo_install.rs index 40037e74e..6dce40768 100644 --- a/src/cargo/ops/cargo_install.rs +++ b/src/cargo/ops/cargo_install.rs @@ -429,9 +429,9 @@ fn select_pkg<'a, T>(mut source: T, return Ok((pkg.clone(), Box::new(source))); fn multi_err(kind: &str, mut pkgs: Vec<&Package>) -> String { - pkgs.sort_by(|a, b| a.name().cmp(b.name())); + pkgs.sort_by(|a, b| a.name().cmp(&b.name())); format!("multiple packages with {} found: {}", kind, - pkgs.iter().map(|p| p.name()).collect::>() + pkgs.iter().map(|p| p.name().to_inner()).collect::>() .join(", ")) } } diff --git a/src/cargo/ops/cargo_run.rs b/src/cargo/ops/cargo_run.rs index 81ac77908..f4c6c71ad 100644 --- a/src/cargo/ops/cargo_run.rs +++ b/src/cargo/ops/cargo_run.rs @@ -16,7 +16,7 @@ pub fn run(ws: &Workspace, Packages::Packages(xs) => match xs.len() { 0 => ws.current()?, 1 => ws.members() - .find(|pkg| pkg.name() == xs[0]) + .find(|pkg| &*pkg.name() == xs[0]) .ok_or_else(|| format_err!("package `{}` is not a member of the workspace", xs[0]) )?, diff --git a/src/cargo/ops/cargo_rustc/compilation.rs b/src/cargo/ops/cargo_rustc/compilation.rs index 7cb781e0f..e9e46cbe2 100644 --- a/src/cargo/ops/cargo_rustc/compilation.rs +++ b/src/cargo/ops/cargo_rustc/compilation.rs @@ -170,7 +170,7 @@ impl<'cfg> Compilation<'cfg> { .env("CARGO_PKG_VERSION_PATCH", &pkg.version().patch.to_string()) .env("CARGO_PKG_VERSION_PRE", &pre_version_component(pkg.version())) .env("CARGO_PKG_VERSION", &pkg.version().to_string()) - .env("CARGO_PKG_NAME", &pkg.name()) + .env("CARGO_PKG_NAME", &*pkg.name()) .env("CARGO_PKG_DESCRIPTION", metadata.description.as_ref().unwrap_or(&String::new())) .env("CARGO_PKG_HOMEPAGE", metadata.homepage.as_ref().unwrap_or(&String::new())) .env("CARGO_PKG_AUTHORS", &pkg.authors().join(":"))