Skip to content

Commit 85f96a9

Browse files
committed
Dependency.name to InternedString
1 parent 8323081 commit 85f96a9

File tree

6 files changed

+26
-25
lines changed

6 files changed

+26
-25
lines changed

src/cargo/core/dependency.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use semver::ReqParseError;
77
use serde::ser;
88

99
use core::{SourceId, Summary, PackageId};
10+
use core::interning::InternedString;
1011
use util::{Cfg, CfgExpr, Config};
1112
use util::errors::{CargoResult, CargoResultExt, CargoError};
1213

@@ -20,7 +21,7 @@ pub struct Dependency {
2021
/// The data underlying a Dependency.
2122
#[derive(PartialEq, Eq, Hash, Ord, PartialOrd, Clone, Debug)]
2223
struct Inner {
23-
name: String,
24+
name: InternedString,
2425
source_id: SourceId,
2526
registry_id: Option<SourceId>,
2627
req: VersionReq,
@@ -63,7 +64,7 @@ impl ser::Serialize for Dependency {
6364
where S: ser::Serializer,
6465
{
6566
SerializedDependency {
66-
name: self.name(),
67+
name: &*self.name(),
6768
source: self.source_id(),
6869
req: self.version_req().to_string(),
6970
kind: self.kind(),
@@ -174,7 +175,7 @@ impl Dependency {
174175
pub fn new_override(name: &str, source_id: &SourceId) -> Dependency {
175176
Dependency {
176177
inner: Rc::new(Inner {
177-
name: name.to_string(),
178+
name: InternedString::new(name),
178179
source_id: source_id.clone(),
179180
registry_id: None,
180181
req: VersionReq::any(),
@@ -194,8 +195,8 @@ impl Dependency {
194195
&self.inner.req
195196
}
196197

197-
pub fn name(&self) -> &str {
198-
&self.inner.name
198+
pub fn name(&self) -> InternedString {
199+
self.inner.name
199200
}
200201

201202
pub fn source_id(&self) -> &SourceId {
@@ -329,13 +330,13 @@ impl Dependency {
329330

330331
/// Returns true if the package (`sum`) can fulfill this dependency request.
331332
pub fn matches_ignoring_source(&self, sum: &Summary) -> bool {
332-
self.name() == &*sum.package_id().name() &&
333+
self.name() == sum.package_id().name() &&
333334
self.version_req().matches(sum.package_id().version())
334335
}
335336

336337
/// Returns true if the package (`id`) can fulfill this dependency request.
337338
pub fn matches_id(&self, id: &PackageId) -> bool {
338-
self.inner.name == &*id.name() &&
339+
self.inner.name == id.name() &&
339340
(self.inner.only_match_name || (self.inner.req.matches(id.version()) &&
340341
&self.inner.source_id == id.source_id()))
341342
}

src/cargo/core/registry.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ impl<'cfg> PackageRegistry<'cfg> {
317317
-> CargoResult<Option<Summary>> {
318318
for s in self.overrides.iter() {
319319
let src = self.sources.get_mut(s).unwrap();
320-
let dep = Dependency::new_override(dep.name(), s);
320+
let dep = Dependency::new_override(&*dep.name(), s);
321321
let mut results = src.query_vec(&dep)?;
322322
if !results.is_empty() {
323323
return Ok(Some(results.remove(0)))
@@ -568,7 +568,7 @@ fn lock(locked: &LockedMap,
568568
// all known locked packages to see if they match this dependency.
569569
// If anything does then we lock it to that and move on.
570570
let v = locked.get(dep.source_id()).and_then(|map| {
571-
map.get(dep.name())
571+
map.get(&*dep.name())
572572
}).and_then(|vec| {
573573
vec.iter().find(|&&(ref id, _)| dep.matches_id(id))
574574
});
@@ -584,7 +584,7 @@ fn lock(locked: &LockedMap,
584584
let v = patches.get(dep.source_id().url()).map(|vec| {
585585
let dep2 = dep.clone();
586586
let mut iter = vec.iter().filter(move |p| {
587-
dep2.name() == &*p.name() &&
587+
dep2.name() == p.name() &&
588588
dep2.version_req().matches(p.version())
589589
});
590590
(iter.next(), iter)

src/cargo/core/resolver/mod.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ fn activation_error(cx: &Context,
10441044
for &(p, r) in links_errors.iter() {
10451045
if let ConflictReason::Links(ref link) = *r {
10461046
msg.push_str("\n\nthe package `");
1047-
msg.push_str(dep.name());
1047+
msg.push_str(&*dep.name());
10481048
msg.push_str("` links to the native library `");
10491049
msg.push_str(link);
10501050
msg.push_str("`, but it conflicts with a previous package which links to `");
@@ -1061,11 +1061,11 @@ fn activation_error(cx: &Context,
10611061
msg.push_str("\n\nthe package `");
10621062
msg.push_str(&*p.name());
10631063
msg.push_str("` depends on `");
1064-
msg.push_str(dep.name());
1064+
msg.push_str(&*dep.name());
10651065
msg.push_str("`, with features: `");
10661066
msg.push_str(features);
10671067
msg.push_str("` but `");
1068-
msg.push_str(dep.name());
1068+
msg.push_str(&*dep.name());
10691069
msg.push_str("` does not have these features.\n");
10701070
}
10711071
// p == parent so the full path is redundant.
@@ -1082,7 +1082,7 @@ fn activation_error(cx: &Context,
10821082
}
10831083

10841084
msg.push_str("\n\nfailed to select a version for `");
1085-
msg.push_str(dep.name());
1085+
msg.push_str(&*dep.name());
10861086
msg.push_str("` which could resolve this conflict");
10871087

10881088
return format_err!("{}", msg)
@@ -1274,7 +1274,7 @@ fn build_requirements<'a, 'b: 'a>(s: &'a Summary, method: &'b Method)
12741274
reqs.require_feature(key)?;
12751275
}
12761276
for dep in s.dependencies().iter().filter(|d| d.is_optional()) {
1277-
reqs.require_dependency(dep.name());
1277+
reqs.require_dependency(dep.name().to_inner());
12781278
}
12791279
}
12801280
Method::Required { features: requested_features, .. } => {
@@ -1365,7 +1365,7 @@ impl Context {
13651365
}
13661366

13671367
fn prev_active(&self, dep: &Dependency) -> &[Summary] {
1368-
self.activations.get(&(InternedString::new(dep.name()), dep.source_id().clone()))
1368+
self.activations.get(&(dep.name(), dep.source_id().clone()))
13691369
.map(|v| &v[..])
13701370
.unwrap_or(&[])
13711371
}
@@ -1397,12 +1397,12 @@ impl Context {
13971397
// Next, collect all actually enabled dependencies and their features.
13981398
for dep in deps {
13991399
// Skip optional dependencies, but not those enabled through a feature
1400-
if dep.is_optional() && !reqs.deps.contains_key(dep.name()) {
1400+
if dep.is_optional() && !reqs.deps.contains_key(&*dep.name()) {
14011401
continue
14021402
}
14031403
// So we want this dependency. Move the features we want from `feature_deps`
14041404
// to `ret`.
1405-
let base = reqs.deps.remove(dep.name()).unwrap_or((false, vec![]));
1405+
let base = reqs.deps.remove(&*dep.name()).unwrap_or((false, vec![]));
14061406
if !dep.is_optional() && base.0 {
14071407
self.warnings.push(
14081408
format!("Package `{}` does not have feature `{}`. It has a required dependency \

src/cargo/core/summary.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl Summary {
3232
features: BTreeMap<String, Vec<String>>,
3333
links: Option<String>) -> CargoResult<Summary> {
3434
for dep in dependencies.iter() {
35-
if features.get(dep.name()).is_some() {
35+
if features.get(&*dep.name()).is_some() {
3636
bail!("Features and dependencies cannot have the \
3737
same name: `{}`", dep.name())
3838
}
@@ -47,7 +47,7 @@ impl Summary {
4747
let dep = parts.next().unwrap();
4848
let is_reexport = parts.next().is_some();
4949
if !is_reexport && features.get(dep).is_some() { continue }
50-
match dependencies.iter().find(|d| d.name() == dep) {
50+
match dependencies.iter().find(|d| &*d.name() == dep) {
5151
Some(d) => {
5252
if d.is_optional() || is_reexport { continue }
5353
bail!("Feature `{}` depends on `{}` which is not an \

src/cargo/ops/cargo_rustc/context.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
782782
let deps = self.resolve.deps(id);
783783
let mut ret = deps.filter(|dep| {
784784
unit.pkg.dependencies().iter().filter(|d| {
785-
d.name() == &*dep.name() && d.version_req().matches(dep.version())
785+
d.name() == dep.name() && d.version_req().matches(dep.version())
786786
}).any(|d| {
787787
// If this target is a build command, then we only want build
788788
// dependencies, otherwise we want everything *other than* build
@@ -806,7 +806,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
806806

807807
// If the dependency is optional, then we're only activating it
808808
// if the corresponding feature was activated
809-
if d.is_optional() && !self.resolve.features(id).contains(d.name()) {
809+
if d.is_optional() && !self.resolve.features(id).contains(&*d.name()) {
810810
return false;
811811
}
812812

@@ -915,7 +915,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> {
915915
fn doc_deps(&self, unit: &Unit<'a>) -> CargoResult<Vec<Unit<'a>>> {
916916
let deps = self.resolve.deps(unit.pkg.package_id()).filter(|dep| {
917917
unit.pkg.dependencies().iter().filter(|d| {
918-
d.name() == &*dep.name()
918+
d.name() == dep.name()
919919
}).any(|dep| {
920920
match dep.kind() {
921921
DepKind::Normal => self.dep_platform_activated(dep,

src/cargo/sources/registry/index.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ impl<'cfg> RegistryIndex<'cfg> {
169169
f: &mut FnMut(Summary))
170170
-> CargoResult<()> {
171171
let source_id = self.source_id.clone();
172-
let summaries = self.summaries(dep.name(), load)?;
172+
let summaries = self.summaries(&*dep.name(), load)?;
173173
let summaries = summaries.iter().filter(|&&(_, yanked)| {
174174
dep.source_id().precise().is_some() || !yanked
175175
}).map(|s| s.0.clone());
@@ -180,7 +180,7 @@ impl<'cfg> RegistryIndex<'cfg> {
180180
// version requested (argument to `--precise`).
181181
let summaries = summaries.filter(|s| {
182182
match source_id.precise() {
183-
Some(p) if p.starts_with(dep.name()) &&
183+
Some(p) if p.starts_with(&*dep.name()) &&
184184
p[dep.name().len()..].starts_with('=') => {
185185
let vers = &p[dep.name().len() + 1..];
186186
s.version().to_string() == vers

0 commit comments

Comments
 (0)