use rustc_hash::FxHashSet;
use crate::{RelativePath, RelativePathBuf};
+use fmt::Display;
/// `FileId` is an integer which uniquely identifies a file. File paths are
/// messy and system-dependent, so most of the code should work directly with
pub fn normalize_dashes(name: &str) -> CrateName {
Self(SmolStr::new(name.replace('-', "_")))
}
+}
- pub fn get_name(&self) -> String {
- self.0.to_string()
+impl Display for CrateName {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", self.0)
}
}
db.crate_graph()[krate]
.display_name
.as_ref()
- .map(|name| name.get_name())
+ .map(ToString::to_string)
.unwrap_or_default()
});
let def_map = {
fn determine_mod_path(db: &RootDatabase, def: &Definition) -> Option<String> {
let mod_path = def.module(db).map(|module| {
- once(
- db.crate_graph()[module.krate().into()]
- .display_name
- .as_ref()
- .map(|name| name.get_name()),
- )
- .chain(
- module
- .path_to_root(db)
- .into_iter()
- .rev()
- .map(|it| it.name(db).map(|name| name.to_string())),
- )
- .chain(once(definition_owner_name(db, def)))
- .flatten()
- .join("::")
+ once(db.crate_graph()[module.krate().into()].display_name.as_ref().map(ToString::to_string))
+ .chain(
+ module
+ .path_to_root(db)
+ .into_iter()
+ .rev()
+ .map(|it| it.name(db).map(|name| name.to_string())),
+ )
+ .chain(once(definition_owner_name(db, def)))
+ .flatten()
+ .join("::")
});
mod_path // FIXME: replace dashes with underscores in crate display name
}