+use std::fmt;
use std::sync::RwLock;
use std::collections::HashSet;
use std::slice;
}
}
+impl fmt::Debug for InternedString {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ let str: &str = &*self;
+ write!(f, "InternedString {{ {} }}", str)
+ }
+}
+
impl Ord for InternedString {
fn cmp(&self, other: &InternedString) -> Ordering {
let str: &str = &*self;
use std::mem::replace;
for (_, b) in self.remaining.by_ref() {
if let Some(link) = b.summary.links() {
- if let Some(a) = links.get(&InternedString::new(link)) {
+ if let Some(a) = links.get(&link) {
if a != b.summary.package_id() {
self.conflicting_prev_active
.entry(a.clone())
- .or_insert_with(|| ConflictReason::Links(link.to_owned()));
+ .or_insert_with(|| ConflictReason::Links(link.to_string()));
continue;
}
}
if !prev.iter().any(|c| c == summary) {
self.resolve_graph.push(GraphNode::Add(id.clone()));
if let Some(link) = summary.links() {
- ensure!(self.links.insert(InternedString::new(link), id.clone()).is_none(),
+ ensure!(self.links.insert(link, id.clone()).is_none(),
"Attempting to resolve a with more then one crate with the links={}. \n\
- This will not build as is. Consider rebuilding the .lock file.", link);
+ This will not build as is. Consider rebuilding the .lock file.", &*link);
}
let mut inner: Vec<_> = (**prev).clone();
inner.push(summary.clone());
use semver::Version;
use core::{Dependency, PackageId, SourceId};
+use core::interning::InternedString;
use util::CargoResult;
dependencies: Vec<Dependency>,
features: BTreeMap<String, Vec<String>>,
checksum: Option<String>,
- links: Option<String>,
+ links: Option<InternedString>,
}
impl Summary {
dependencies,
features,
checksum: None,
- links,
+ links: links.map(|l| InternedString::new(&l)),
}),
})
}
pub fn checksum(&self) -> Option<&str> {
self.inner.checksum.as_ref().map(|s| &s[..])
}
- pub fn links(&self) -> Option<&str> {
- self.inner.links.as_ref().map(|s| &s[..])
+ pub fn links(&self) -> Option<InternedString> {
+ self.inner.links
}
pub fn override_id(mut self, id: PackageId) -> Summary {