Unnamed repository; edit this file 'description' to name the repository.
Replace more Name::to_string usages with Name::to_smol_str
Lukas Wirth 2021-11-05
parent 962be38 · commit 439a819
-rw-r--r--crates/hir/src/lib.rs11
-rw-r--r--crates/hir_def/src/attr.rs2
-rw-r--r--crates/hir_def/src/body/scope.rs2
-rw-r--r--crates/hir_def/src/item_tree/lower.rs2
-rw-r--r--crates/hir_def/src/lib.rs4
-rw-r--r--crates/hir_def/src/nameres/collector.rs4
-rw-r--r--crates/hir_def/src/nameres/mod_resolution.rs2
-rw-r--r--crates/hir_def/src/path.rs2
-rw-r--r--crates/hir_expand/src/lib.rs4
-rw-r--r--crates/hir_expand/src/name.rs3
-rw-r--r--crates/ide/src/display/navigation_target.rs14
-rw-r--r--crates/ide/src/inlay_hints.rs10
-rw-r--r--crates/ide/src/rename.rs2
-rw-r--r--crates/ide_completion/src/completions/flyimport.rs2
-rw-r--r--crates/ide_completion/src/completions/lifetime.rs2
-rw-r--r--crates/ide_completion/src/completions/mod_.rs2
-rw-r--r--crates/ide_db/src/defs.rs2
-rw-r--r--crates/ide_db/src/helpers.rs2
-rw-r--r--crates/ide_db/src/helpers/famous_defs.rs6
-rw-r--r--crates/ide_db/src/helpers/import_assets.rs4
-rw-r--r--crates/ide_db/src/search.rs2
-rw-r--r--crates/ide_db/src/ty_filter.rs2
-rw-r--r--crates/ide_diagnostics/src/handlers/missing_fields.rs2
-rw-r--r--crates/ide_ssr/src/resolving.rs2
24 files changed, 49 insertions, 41 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index a221c4d57e..2096c485e4 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -580,7 +580,7 @@ impl Module {
});
for token in tokens {
if token.kind() == SyntaxKind::IDENT
- && token.text() == derive_name.as_str()
+ && token.text() == &**derive_name
{
precise_location = Some(token.text_range());
break 'outer;
@@ -606,7 +606,12 @@ impl Module {
}
};
acc.push(
- UnresolvedProcMacro { node, precise_location, macro_name: name }.into(),
+ UnresolvedProcMacro {
+ node,
+ precise_location,
+ macro_name: name.map(Into::into),
+ }
+ .into(),
);
}
@@ -2219,7 +2224,7 @@ impl Impl {
.attrs()
.filter_map(|it| {
let path = ModPath::from_src(db.upcast(), it.path()?, &hygenic)?;
- if path.as_ident()?.to_string() == "derive" {
+ if path.as_ident()?.to_smol_str() == "derive" {
Some(it)
} else {
None
diff --git a/crates/hir_def/src/attr.rs b/crates/hir_def/src/attr.rs
index 3bf7a33030..4f68c91cc9 100644
--- a/crates/hir_def/src/attr.rs
+++ b/crates/hir_def/src/attr.rs
@@ -796,7 +796,7 @@ impl<'a> AttrQuery<'a> {
let key = self.key;
self.attrs
.iter()
- .filter(move |attr| attr.path.as_ident().map_or(false, |s| s.to_string() == key))
+ .filter(move |attr| attr.path.as_ident().map_or(false, |s| s.to_smol_str() == key))
}
}
diff --git a/crates/hir_def/src/body/scope.rs b/crates/hir_def/src/body/scope.rs
index 82b23f2f46..f40eb2f9d4 100644
--- a/crates/hir_def/src/body/scope.rs
+++ b/crates/hir_def/src/body/scope.rs
@@ -282,7 +282,7 @@ mod tests {
let actual = scopes
.scope_chain(scope)
.flat_map(|scope| scopes.entries(scope))
- .map(|it| it.name().to_string())
+ .map(|it| it.name().to_smol_str())
.collect::<Vec<_>>()
.join("\n");
let expected = expected.join("\n");
diff --git a/crates/hir_def/src/item_tree/lower.rs b/crates/hir_def/src/item_tree/lower.rs
index a15125c3d4..9381ca39f7 100644
--- a/crates/hir_def/src/item_tree/lower.rs
+++ b/crates/hir_def/src/item_tree/lower.rs
@@ -449,7 +449,7 @@ impl<'a> Ctx<'a> {
fn lower_const(&mut self, konst: &ast::Const) -> FileItemTreeId<Const> {
let mut name = konst.name().map(|it| it.as_name());
- if name.as_ref().map_or(false, |n| n.to_string().starts_with("_DERIVE_")) {
+ if name.as_ref().map_or(false, |n| n.to_smol_str().starts_with("_DERIVE_")) {
// FIXME: this is a hack to treat consts generated by synstructure as unnamed
// remove this some time in the future
name = None;
diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs
index 6cc6bf98fb..5ddef48495 100644
--- a/crates/hir_def/src/lib.rs
+++ b/crates/hir_def/src/lib.rs
@@ -764,7 +764,7 @@ fn derive_macro_as_call_id(
krate,
MacroCallKind::Derive {
ast_id: item_attr.ast_id,
- derive_name: last_segment.to_string(),
+ derive_name: last_segment.to_string().into_boxed_str(),
derive_attr_index: derive_attr.ast_index,
},
);
@@ -801,7 +801,7 @@ fn attr_macro_as_call_id(
krate,
MacroCallKind::Attr {
ast_id: item_attr.ast_id,
- attr_name: last_segment.to_string(),
+ attr_name: last_segment.to_string().into_boxed_str(),
attr_args: arg,
invoc_attr_index: macro_attr.id.ast_index,
},
diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs
index 0349754fba..1c578dbdc2 100644
--- a/crates/hir_def/src/nameres/collector.rs
+++ b/crates/hir_def/src/nameres/collector.rs
@@ -1759,7 +1759,7 @@ impl ModCollector<'_, '_> {
fn is_builtin_or_registered_attr(&self, path: &ModPath) -> bool {
if path.kind == PathKind::Plain {
if let Some(tool_module) = path.segments().first() {
- let tool_module = tool_module.to_string();
+ let tool_module = tool_module.to_smol_str();
let is_tool = builtin_attr::TOOL_MODULES
.iter()
.copied()
@@ -1771,7 +1771,7 @@ impl ModCollector<'_, '_> {
}
if let Some(name) = path.as_ident() {
- let name = name.to_string();
+ let name = name.to_smol_str();
let is_inert = builtin_attr::INERT_ATTRIBUTES
.iter()
.chain(builtin_attr::EXTRA_ATTRIBUTES)
diff --git a/crates/hir_def/src/nameres/mod_resolution.rs b/crates/hir_def/src/nameres/mod_resolution.rs
index 031ff8b181..bd2588e592 100644
--- a/crates/hir_def/src/nameres/mod_resolution.rs
+++ b/crates/hir_def/src/nameres/mod_resolution.rs
@@ -42,7 +42,7 @@ impl ModDir {
let path = match attr_path.map(|it| it.as_str()) {
None => {
let mut path = self.dir_path.clone();
- path.push(&name.to_string());
+ path.push(&name.to_smol_str());
path
}
Some(attr_path) => {
diff --git a/crates/hir_def/src/path.rs b/crates/hir_def/src/path.rs
index 667092cd20..d17e6b1834 100644
--- a/crates/hir_def/src/path.rs
+++ b/crates/hir_def/src/path.rs
@@ -46,7 +46,7 @@ impl Display for ImportAlias {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
ImportAlias::Underscore => f.write_str("_"),
- ImportAlias::Alias(name) => f.write_str(&name.to_string()),
+ ImportAlias::Alias(name) => f.write_str(&name.to_smol_str()),
}
}
}
diff --git a/crates/hir_expand/src/lib.rs b/crates/hir_expand/src/lib.rs
index 4742cb089e..b6e8f58c2e 100644
--- a/crates/hir_expand/src/lib.rs
+++ b/crates/hir_expand/src/lib.rs
@@ -122,7 +122,7 @@ pub enum MacroCallKind {
},
Derive {
ast_id: AstId<ast::Item>,
- derive_name: String,
+ derive_name: Box<str>,
/// Syntactical index of the invoking `#[derive]` attribute.
///
/// Outer attributes are counted first, then inner attributes. This does not support
@@ -131,7 +131,7 @@ pub enum MacroCallKind {
},
Attr {
ast_id: AstId<ast::Item>,
- attr_name: String,
+ attr_name: Box<str>,
attr_args: (tt::Subtree, mbe::TokenMap),
/// Syntactical index of the invoking `#[attribute]`.
///
diff --git a/crates/hir_expand/src/name.rs b/crates/hir_expand/src/name.rs
index 0225ab425f..95d272ba68 100644
--- a/crates/hir_expand/src/name.rs
+++ b/crates/hir_expand/src/name.rs
@@ -84,7 +84,8 @@ impl Name {
}
/// Returns the textual representation of this name as a [`SmolStr`].
- /// Prefer using this over [`ToString::to_string`] if possible as this conversion is cheaper.
+ /// Prefer using this over [`ToString::to_string`] if possible as this conversion is cheaper in
+ /// the general case.
pub fn to_smol_str(&self) -> SmolStr {
match &self.0 {
Repr::Text(it) => it.clone(),
diff --git a/crates/ide/src/display/navigation_target.rs b/crates/ide/src/display/navigation_target.rs
index 01c1259fc5..b21998e0d2 100644
--- a/crates/ide/src/display/navigation_target.rs
+++ b/crates/ide/src/display/navigation_target.rs
@@ -90,7 +90,7 @@ impl NavigationTarget {
}
pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget {
- let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default();
+ let name = module.name(db).map(|it| it.to_smol_str()).unwrap_or_default();
if let Some(src) = module.declaration_source(db) {
let node = src.syntax();
let full_range = node.original_file_range(db);
@@ -275,7 +275,7 @@ where
impl ToNav for hir::Module {
fn to_nav(&self, db: &RootDatabase) -> NavigationTarget {
let src = self.definition_source(db);
- let name = self.name(db).map(|it| it.to_string().into()).unwrap_or_default();
+ let name = self.name(db).map(|it| it.to_smol_str()).unwrap_or_default();
let (syntax, focus) = match &src.value {
ModuleSource::SourceFile(node) => (node.syntax(), None),
ModuleSource::Module(node) => {
@@ -399,7 +399,7 @@ impl ToNav for hir::Local {
let full_range = src.with_value(&node).original_file_range(db);
let name = match self.name(db) {
- Some(it) => it.to_string().into(),
+ Some(it) => it.to_smol_str(),
None => "".into(),
};
let kind = if self.is_self(db) {
@@ -429,7 +429,7 @@ impl ToNav for hir::Label {
let FileRange { file_id, range } = src.with_value(node).original_file_range(db);
let focus_range =
src.value.lifetime().and_then(|lt| lt.lifetime_ident_token()).map(|lt| lt.text_range());
- let name = self.name(db).to_string().into();
+ let name = self.name(db).to_smol_str();
NavigationTarget {
file_id,
name,
@@ -459,7 +459,7 @@ impl TryToNav for hir::TypeParam {
.map(|it| it.syntax().text_range());
Some(NavigationTarget {
file_id: src.file_id.original_file(db),
- name: self.name(db).to_string().into(),
+ name: self.name(db).to_smol_str(),
kind: Some(SymbolKind::TypeParam),
full_range,
focus_range,
@@ -476,7 +476,7 @@ impl TryToNav for hir::LifetimeParam {
let full_range = src.value.syntax().text_range();
Some(NavigationTarget {
file_id: src.file_id.original_file(db),
- name: self.name(db).to_string().into(),
+ name: self.name(db).to_smol_str(),
kind: Some(SymbolKind::LifetimeParam),
full_range,
focus_range: Some(full_range),
@@ -493,7 +493,7 @@ impl TryToNav for hir::ConstParam {
let full_range = src.value.syntax().text_range();
Some(NavigationTarget {
file_id: src.file_id.original_file(db),
- name: self.name(db).to_string().into(),
+ name: self.name(db).to_smol_str(),
kind: Some(SymbolKind::ConstParam),
full_range,
focus_range: src.value.name().map(|n| n.syntax().text_range()),
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs
index db91e68ff3..710d6b7882 100644
--- a/crates/ide/src/inlay_hints.rs
+++ b/crates/ide/src/inlay_hints.rs
@@ -344,7 +344,7 @@ fn pat_is_enum_variant(db: &RootDatabase, bind_pat: &ast::IdentPat, pat_ty: &hir
enum_data
.variants(db)
.into_iter()
- .map(|variant| variant.name(db).to_string())
+ .map(|variant| variant.name(db).to_smol_str())
.any(|enum_name| enum_name == pat_text)
} else {
false
@@ -363,7 +363,7 @@ fn should_not_display_type_hint(
}
if let Some(hir::Adt::Struct(s)) = pat_ty.as_adt() {
- if s.fields(db).is_empty() && s.name(db).to_string() == bind_pat.to_string() {
+ if s.fields(db).is_empty() && s.name(db).to_smol_str() == bind_pat.to_string() {
return true;
}
}
@@ -419,7 +419,7 @@ fn should_hide_param_name_hint(
}
let fn_name = match callable.kind() {
- hir::CallableKind::Function(it) => Some(it.name(sema.db).to_string()),
+ hir::CallableKind::Function(it) => Some(it.name(sema.db).to_smol_str()),
_ => None,
};
let fn_name = fn_name.as_deref();
@@ -475,7 +475,9 @@ fn is_enum_name_similar_to_param_name(
param_name: &str,
) -> bool {
match sema.type_of_expr(argument).and_then(|t| t.original.as_adt()) {
- Some(hir::Adt::Enum(e)) => to_lower_snake_case(&e.name(sema.db).to_string()) == param_name,
+ Some(hir::Adt::Enum(e)) => {
+ to_lower_snake_case(&e.name(sema.db).to_smol_str()) == param_name
+ }
_ => false,
}
}
diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs
index 3afcccd64d..a7ebba82b0 100644
--- a/crates/ide/src/rename.rs
+++ b/crates/ide/src/rename.rs
@@ -159,7 +159,7 @@ fn find_definitions(
// if the name differs from the definitions name it has to be an alias
if def
.name(sema.db)
- .map_or(false, |it| it.to_string() != name_ref.text())
+ .map_or(false, |it| it.to_smol_str() != name_ref.text().as_str())
{
Err(format_err!("Renaming aliases is currently unsupported"))
} else {
diff --git a/crates/ide_completion/src/completions/flyimport.rs b/crates/ide_completion/src/completions/flyimport.rs
index 956411f1a3..47036f2e13 100644
--- a/crates/ide_completion/src/completions/flyimport.rs
+++ b/crates/ide_completion/src/completions/flyimport.rs
@@ -209,7 +209,7 @@ pub(crate) fn compute_fuzzy_completion_order_key(
) -> usize {
cov_mark::hit!(certain_fuzzy_order_test);
let import_name = match proposed_mod_path.segments().last() {
- Some(name) => name.to_string().to_lowercase(),
+ Some(name) => name.to_smol_str().to_lowercase(),
None => return usize::MAX,
};
match import_name.match_indices(user_input_lowercased).next() {
diff --git a/crates/ide_completion/src/completions/lifetime.rs b/crates/ide_completion/src/completions/lifetime.rs
index 283dc021d6..f530825434 100644
--- a/crates/ide_completion/src/completions/lifetime.rs
+++ b/crates/ide_completion/src/completions/lifetime.rs
@@ -34,7 +34,7 @@ pub(crate) fn complete_lifetime(acc: &mut Completions, ctx: &CompletionContext)
ctx.scope.process_all_names(&mut |name, res| {
if let ScopeDef::GenericParam(hir::GenericParam::LifetimeParam(_)) = res {
- if param_lifetime != Some(&*name.to_string()) {
+ if param_lifetime != Some(&*name.to_smol_str()) {
acc.add_resolution(ctx, name, &res);
}
}
diff --git a/crates/ide_completion/src/completions/mod_.rs b/crates/ide_completion/src/completions/mod_.rs
index 28be83f196..beef834581 100644
--- a/crates/ide_completion/src/completions/mod_.rs
+++ b/crates/ide_completion/src/completions/mod_.rs
@@ -121,7 +121,7 @@ fn directory_to_look_for_submodules(
module_chain_to_containing_module_file(module, db)
.into_iter()
.filter_map(|module| module.name(db))
- .try_fold(base_directory, |path, name| path.join(&name.to_string()))
+ .try_fold(base_directory, |path, name| path.join(&name.to_smol_str()))
}
fn module_chain_to_containing_module_file(
diff --git a/crates/ide_db/src/defs.rs b/crates/ide_db/src/defs.rs
index 5bc8e8764f..d95bca515f 100644
--- a/crates/ide_db/src/defs.rs
+++ b/crates/ide_db/src/defs.rs
@@ -404,7 +404,7 @@ impl NameRefClass {
hir::AssocItem::TypeAlias(it) => Some(*it),
_ => None,
})
- .find(|alias| alias.name(sema.db).to_string() == name_ref.text())
+ .find(|alias| alias.name(sema.db).to_smol_str() == name_ref.text().as_str())
{
return Some(NameRefClass::Definition(Definition::ModuleDef(
ModuleDef::TypeAlias(ty),
diff --git a/crates/ide_db/src/helpers.rs b/crates/ide_db/src/helpers.rs
index f6a1a55218..5c5dbdfb5f 100644
--- a/crates/ide_db/src/helpers.rs
+++ b/crates/ide_db/src/helpers.rs
@@ -113,7 +113,7 @@ pub fn mod_path_to_ast(path: &hir::ModPath) -> ast::Path {
segments.extend(
path.segments()
.iter()
- .map(|segment| make::path_segment(make::name_ref(&segment.to_string()))),
+ .map(|segment| make::path_segment(make::name_ref(&segment.to_smol_str()))),
);
make::path_from_segments(segments, is_abs)
}
diff --git a/crates/ide_db/src/helpers/famous_defs.rs b/crates/ide_db/src/helpers/famous_defs.rs
index e8993d327f..fd92c64f17 100644
--- a/crates/ide_db/src/helpers/famous_defs.rs
+++ b/crates/ide_db/src/helpers/famous_defs.rs
@@ -139,7 +139,7 @@ impl FamousDefs<'_, '_> {
let krate = self.1?;
let db = self.0.db;
let res =
- krate.dependencies(db).into_iter().find(|dep| dep.name.to_string() == name)?.krate;
+ krate.dependencies(db).into_iter().find(|dep| dep.name.to_smol_str() == name)?.krate;
Some(res)
}
@@ -153,7 +153,7 @@ impl FamousDefs<'_, '_> {
for segment in path {
module = module.children(db).find_map(|child| {
let name = child.name(db)?;
- if name.to_string() == segment {
+ if name.to_smol_str() == segment {
Some(child)
} else {
None
@@ -161,7 +161,7 @@ impl FamousDefs<'_, '_> {
})?;
}
let def =
- module.scope(db, None).into_iter().find(|(name, _def)| name.to_string() == trait_)?.1;
+ module.scope(db, None).into_iter().find(|(name, _def)| name.to_smol_str() == trait_)?.1;
Some(def)
}
}
diff --git a/crates/ide_db/src/helpers/import_assets.rs b/crates/ide_db/src/helpers/import_assets.rs
index 0b3ecd095b..9a8adf167c 100644
--- a/crates/ide_db/src/helpers/import_assets.rs
+++ b/crates/ide_db/src/helpers/import_assets.rs
@@ -410,7 +410,7 @@ fn find_import_for_segment(
unresolved_first_segment: &str,
) -> Option<ItemInNs> {
let segment_is_name = item_name(db, original_item)
- .map(|name| name.to_string() == unresolved_first_segment)
+ .map(|name| name.to_smol_str() == unresolved_first_segment)
.unwrap_or(false);
Some(if segment_is_name {
@@ -434,7 +434,7 @@ fn module_with_segment_name(
};
while let Some(module) = current_module {
if let Some(module_name) = module.name(db) {
- if module_name.to_string() == segment_name {
+ if module_name.to_smol_str() == segment_name {
return Some(module);
}
}
diff --git a/crates/ide_db/src/search.rs b/crates/ide_db/src/search.rs
index 7073232729..65deaf4d7d 100644
--- a/crates/ide_db/src/search.rs
+++ b/crates/ide_db/src/search.rs
@@ -385,7 +385,7 @@ impl<'a> FindUsages<'a> {
})
});
let name = match name {
- Some(name) => name.to_string(),
+ Some(name) => name.to_smol_str(),
None => return,
};
let name = name.as_str();
diff --git a/crates/ide_db/src/ty_filter.rs b/crates/ide_db/src/ty_filter.rs
index 28c01d3173..2c6b00b134 100644
--- a/crates/ide_db/src/ty_filter.rs
+++ b/crates/ide_db/src/ty_filter.rs
@@ -26,7 +26,7 @@ impl TryEnum {
_ => return None,
};
TryEnum::ALL.iter().find_map(|&var| {
- if enum_.name(sema.db).to_string() == var.type_name() {
+ if enum_.name(sema.db).to_smol_str() == var.type_name() {
return Some(var);
}
None
diff --git a/crates/ide_diagnostics/src/handlers/missing_fields.rs b/crates/ide_diagnostics/src/handlers/missing_fields.rs
index 3d416591fe..8d17a7e714 100644
--- a/crates/ide_diagnostics/src/handlers/missing_fields.rs
+++ b/crates/ide_diagnostics/src/handlers/missing_fields.rs
@@ -76,7 +76,7 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::MissingFields) -> Option<Vec<Ass
Some(make::ext::expr_todo())
};
let field =
- make::record_expr_field(make::name_ref(&f.name(ctx.sema.db).to_string()), field_expr)
+ make::record_expr_field(make::name_ref(&f.name(ctx.sema.db).to_smol_str()), field_expr)
.clone_for_update();
new_field_list.add_field(field);
}
diff --git a/crates/ide_ssr/src/resolving.rs b/crates/ide_ssr/src/resolving.rs
index 9cdd270b80..84e5f82604 100644
--- a/crates/ide_ssr/src/resolving.rs
+++ b/crates/ide_ssr/src/resolving.rs
@@ -226,7 +226,7 @@ impl<'db> ResolutionScope<'db> {
None,
|_ty, assoc_item| {
let item_name = assoc_item.name(self.scope.db)?;
- if item_name.to_string().as_str() == name.text() {
+ if item_name.to_smol_str().as_str() == name.text() {
Some(hir::PathResolution::AssocItem(assoc_item))
} else {
None