Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22998 from bit-aloo/2026-08-02-bump-rowan-0.17
Bump rowan 0.17.0
Chayim Refael Friedman 5 days ago
parent 5f008e2 · parent f559631 · commit 3de0b57
-rw-r--r--Cargo.lock4
-rw-r--r--Cargo.toml2
-rw-r--r--crates/hir-def/src/attrs.rs2
-rw-r--r--crates/hir-def/src/expr_store/lower.rs8
-rw-r--r--crates/hir-def/src/expr_store/lower/asm.rs4
-rw-r--r--crates/hir-def/src/expr_store/lower/generics.rs2
-rw-r--r--crates/hir-expand/src/builtin/derive_macro.rs18
-rw-r--r--crates/hir-expand/src/name.rs4
-rw-r--r--crates/hir/src/source_analyzer.rs6
-rw-r--r--crates/ide-assists/src/handlers/apply_demorgan.rs4
-rw-r--r--crates/ide-assists/src/handlers/convert_closure_to_fn.rs2
-rw-r--r--crates/ide-assists/src/handlers/convert_into_to_from.rs2
-rw-r--r--crates/ide-assists/src/handlers/convert_match_to_let_else.rs3
-rw-r--r--crates/ide-assists/src/handlers/convert_range_for_to_while.rs2
-rw-r--r--crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs4
-rw-r--r--crates/ide-assists/src/handlers/extract_function.rs4
-rw-r--r--crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs25
-rw-r--r--crates/ide-assists/src/handlers/extract_type_alias.rs9
-rw-r--r--crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs4
-rw-r--r--crates/ide-assists/src/handlers/generate_default_from_enum_variant.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_is_method.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_projection_method.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_variant.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_function.rs6
-rw-r--r--crates/ide-assists/src/handlers/generate_getter_or_setter.rs4
-rw-r--r--crates/ide-assists/src/handlers/generate_impl.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_mut_trait_impl.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_single_field_struct_from.rs24
-rw-r--r--crates/ide-assists/src/handlers/generate_trait_from_impl.rs4
-rw-r--r--crates/ide-assists/src/handlers/inline_type_alias.rs2
-rw-r--r--crates/ide-assists/src/handlers/merge_match_arms.rs2
-rw-r--r--crates/ide-assists/src/handlers/reorder_impl_items.rs2
-rw-r--r--crates/ide-assists/src/handlers/replace_method_eager_lazy.rs4
-rw-r--r--crates/ide-assists/src/utils.rs6
-rw-r--r--crates/ide-assists/src/utils/gen_trait_fn_body.rs2
-rw-r--r--crates/ide-completion/src/completions/attribute.rs1
-rw-r--r--crates/ide-completion/src/completions/attribute/repr.rs2
-rw-r--r--crates/ide-completion/src/completions/postfix.rs2
-rw-r--r--crates/ide-db/src/imports/import_assets.rs6
-rw-r--r--crates/ide-db/src/imports/insert_use.rs2
-rw-r--r--crates/ide-db/src/imports/merge_imports.rs10
-rw-r--r--crates/ide-db/src/path_transform.rs4
-rw-r--r--crates/ide-db/src/ra_fixture.rs3
-rw-r--r--crates/ide-db/src/rename.rs6
-rw-r--r--crates/ide-db/src/search.rs8
-rw-r--r--crates/ide-ssr/src/resolving.rs2
-rw-r--r--crates/ide/src/doc_links.rs2
-rw-r--r--crates/ide/src/file_structure.rs2
-rw-r--r--crates/ide/src/inlay_hints/lifetime.rs12
-rw-r--r--crates/ide/src/inlay_hints/param_name.rs10
-rw-r--r--crates/ide/src/navigation_target.rs2
-rw-r--r--crates/span/src/ast_id.rs8
-rw-r--r--crates/syntax/src/ast/edit.rs2
-rw-r--r--crates/syntax/src/ast/node_ext.rs41
-rw-r--r--crates/syntax/src/lib.rs2
-rw-r--r--crates/syntax/src/syntax_editor/edit_algo.rs6
-rw-r--r--crates/syntax/src/token_text.rs102
57 files changed, 136 insertions, 276 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 7a2e2d493b..51d907024c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2296,9 +2296,9 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]]
name = "rowan"
-version = "0.15.19"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2441aaccb50f4267d4f0f58b21e0138e96a449f361ed57a2673a83c9bca0772"
+checksum = "14b574c58582fa59fa43a2feb6608b8744184659f08a2e0117e4b8224d95ed61"
dependencies = [
"countme",
"hashbrown 0.14.5",
diff --git a/Cargo.toml b/Cargo.toml
index 4ef92c5bd2..a56d9770f5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -123,7 +123,7 @@ process-wrap = { version = "9.1.0", features = ["std"] }
pulldown-cmark-to-cmark = "10.0.4"
pulldown-cmark = { version = "0.9.6", default-features = false }
rayon = "1.10.0"
-rowan = "=0.15.19"
+rowan = "0.17.0"
# Ideally we'd not enable the macros feature but unfortunately the `tracked` attribute does not work
# on impls without it
salsa = { version = "0.27.0", default-features = false, features = [
diff --git a/crates/hir-def/src/attrs.rs b/crates/hir-def/src/attrs.rs
index d55509e2f0..c330b374f7 100644
--- a/crates/hir-def/src/attrs.rs
+++ b/crates/hir-def/src/attrs.rs
@@ -201,7 +201,7 @@ fn match_attr_flags(attr_flags: &mut AttrFlags, attr: ast::Meta) -> ControlFlow<
let segment4 = segment4.and_then(|it| it.segment()?.name_ref());
segment1.text() == "test"
&& segment3.is_none_or(|it| it.text() == "prelude")
- && segment4.is_none_or(|it| matches!(&*it.text(), "core" | "std"))
+ && segment4.is_none_or(|it| matches!(it.text(), "core" | "std"))
});
if is_test {
attr_flags.insert(AttrFlags::IS_TEST);
diff --git a/crates/hir-def/src/expr_store/lower.rs b/crates/hir-def/src/expr_store/lower.rs
index df4fc6e531..aaca830088 100644
--- a/crates/hir-def/src/expr_store/lower.rs
+++ b/crates/hir-def/src/expr_store/lower.rs
@@ -665,7 +665,7 @@ impl<'db> ExprCollector<'db> {
lifetime: ast::Lifetime,
) -> LifetimeRefId {
// FIXME: Keyword check?
- let lifetime_ref = match &*lifetime.text() {
+ let lifetime_ref = match lifetime.text() {
"" | "'" => LifetimeRef::Error,
"'static" => LifetimeRef::Static,
"'_" => LifetimeRef::Placeholder,
@@ -1295,7 +1295,7 @@ impl<'db> ExprCollector<'db> {
match binder.generic_param_list() {
Some(gpl) => gpl
.lifetime_params()
- .flat_map(|lp| lp.lifetime().map(|lt| Name::new_lifetime(&lt.text())))
+ .flat_map(|lp| lp.lifetime().map(|lt| Name::new_lifetime(lt.text())))
.collect(),
None => ThinVec::default(),
}
@@ -3175,7 +3175,7 @@ impl<'db> ExprCollector<'db> {
name: ast_label
.lifetime()
.as_ref()
- .map_or_else(Name::missing, |lt| Name::new_lifetime(&lt.text())),
+ .map_or_else(Name::missing, |lt| Name::new_lifetime(lt.text())),
};
self.alloc_label(label, AstPtr::new(&ast_label))
}
@@ -3195,7 +3195,7 @@ impl<'db> ExprCollector<'db> {
(hygiene_id.syntax_context().parent(self.db), expansion.def)
})
};
- let name = Name::new_lifetime(&lifetime.text());
+ let name = Name::new_lifetime(lifetime.text());
for (rib_idx, rib) in self.label_ribs.iter().enumerate().rev() {
match &rib.kind {
diff --git a/crates/hir-def/src/expr_store/lower/asm.rs b/crates/hir-def/src/expr_store/lower/asm.rs
index 63a0594f74..fb0a5b0bf7 100644
--- a/crates/hir-def/src/expr_store/lower/asm.rs
+++ b/crates/hir-def/src/expr_store/lower/asm.rs
@@ -39,7 +39,7 @@ impl ExprCollector<'_> {
Some(InlineAsmRegOrRegClass::Reg(Symbol::intern(string.text())))
} else {
reg.name_ref().map(|name_ref| {
- InlineAsmRegOrRegClass::RegClass(Symbol::intern(&name_ref.text()))
+ InlineAsmRegOrRegClass::RegClass(Symbol::intern(name_ref.text()))
})
}
};
@@ -69,7 +69,7 @@ impl ExprCollector<'_> {
continue;
}
ast::AsmPiece::AsmOperandNamed(op) => {
- let name = op.name().map(|name| Symbol::intern(&name.text()));
+ let name = op.name().map(|name| Symbol::intern(name.text()));
if let Some(name) = &name {
named_args.insert(name.clone(), slot);
named_pos.insert(slot, name.clone());
diff --git a/crates/hir-def/src/expr_store/lower/generics.rs b/crates/hir-def/src/expr_store/lower/generics.rs
index ce6e73670c..65877fb627 100644
--- a/crates/hir-def/src/expr_store/lower/generics.rs
+++ b/crates/hir-def/src/expr_store/lower/generics.rs
@@ -181,7 +181,7 @@ impl GenericParamsCollector {
.map(|lifetime_param| {
lifetime_param
.lifetime()
- .map_or_else(Name::missing, |lt| Name::new_lifetime(&lt.text()))
+ .map_or_else(Name::missing, |lt| Name::new_lifetime(lt.text()))
})
.collect()
});
diff --git a/crates/hir-expand/src/builtin/derive_macro.rs b/crates/hir-expand/src/builtin/derive_macro.rs
index 5e85a710e0..63e5764728 100644
--- a/crates/hir-expand/src/builtin/derive_macro.rs
+++ b/crates/hir-expand/src/builtin/derive_macro.rs
@@ -412,7 +412,7 @@ fn name_to_token(
})?;
let span = token_map.span_at(name.syntax().text_range().start());
- let name_token = tt::Ident::new(name.text().as_ref(), span);
+ let name_token = tt::Ident::new(name.text(), span);
Ok(name_token)
}
@@ -1184,7 +1184,7 @@ fn coerce_pointee_expand(
let new_bounds = bounds.bounds().filter_map(|bound| {
let new_bound = substitute_type_bound(
bound.clone(),
- &pointee_param_name.text(),
+ pointee_param_name.text(),
ADDED_PARAM,
);
@@ -1197,7 +1197,7 @@ fn coerce_pointee_expand(
let new_bounds_target = if is_pointee {
make.name_ref(ADDED_PARAM)
} else {
- make.name_ref(&param_name.text())
+ make.name_ref(param_name.text())
};
new_predicates.push(make.where_pred(
Either::Right(
@@ -1240,12 +1240,12 @@ fn coerce_pointee_expand(
// If the target type references the pointee, duplicate the bound as whole.
// Otherwise, duplicate only bounds that mention the pointee.
if let Some(predicate_with_substituted_target) =
- substitute_where_pred(&predicate, &pointee_param_name.text(), ADDED_PARAM)
+ substitute_where_pred(&predicate, pointee_param_name.text(), ADDED_PARAM)
{
new_predicates.push(predicate_with_substituted_target);
} else if let Some(bounds) = predicate.type_bound_list() {
let new_bounds = bounds.bounds().filter_map(|bound| {
- substitute_type_bound(bound, &pointee_param_name.text(), ADDED_PARAM)
+ substitute_type_bound(bound, pointee_param_name.text(), ADDED_PARAM)
});
new_predicates.push(make.where_pred(Either::Right(pred_target), new_bounds));
}
@@ -1259,7 +1259,7 @@ fn coerce_pointee_expand(
new_predicates.push(
make.where_pred(
Either::Right(make.ty_path_from_segments(
- [make.path_segment(make.name_ref(&pointee_param_name.text()))],
+ [make.path_segment(make.name_ref(pointee_param_name.text()))],
false,
)),
[make.type_bound(
@@ -1294,7 +1294,7 @@ fn coerce_pointee_expand(
.filter_map(|param| {
Some(match param {
ast::GenericParam::ConstParam(param) => {
- ast::GenericArg::ConstArg(make.expr_const_value(&param.name()?.text()))
+ ast::GenericArg::ConstArg(make.expr_const_value(param.name()?.text()))
}
ast::GenericParam::LifetimeParam(param) => {
make.lifetime_arg(param.lifetime()?).into()
@@ -1303,7 +1303,7 @@ fn coerce_pointee_expand(
let name = if pointee_param_idx == type_param_idx {
make.name_ref(ADDED_PARAM)
} else {
- make.name_ref(&param.name()?.text())
+ make.name_ref(param.name()?.text())
};
type_param_idx += 1;
make.type_arg(make.ty_path_from_segments([make.path_segment(name)], false))
@@ -1314,7 +1314,7 @@ fn coerce_pointee_expand(
make.path_from_segments(
[make.generic_ty_path_segment(
- make.name_ref(&struct_name.text()),
+ make.name_ref(struct_name.text()),
self_params_for_traits,
)],
false,
diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs
index d91b0f378e..7968adabbc 100644
--- a/crates/hir-expand/src/name.rs
+++ b/crates/hir-expand/src/name.rs
@@ -246,14 +246,14 @@ impl AsName for ast::NameRef {
fn as_name(&self) -> Name {
match self.as_tuple_field() {
Some(idx) => Name::new_tuple_field(idx),
- None => Name::new_root(&self.text()),
+ None => Name::new_root(self.text()),
}
}
}
impl AsName for ast::Name {
fn as_name(&self) -> Name {
- Name::new_root(&self.text())
+ Name::new_root(self.text())
}
}
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs
index e80567641b..209091683a 100644
--- a/crates/hir/src/source_analyzer.rs
+++ b/crates/hir/src/source_analyzer.rs
@@ -1320,7 +1320,7 @@ impl<'db> SourceAnalyzer<'db> {
.first_segment()
.and_then(|it| it.name_ref())
.and_then(|name_ref| {
- ToolModule::by_name(db, self.resolver.krate().into(), &name_ref.text())
+ ToolModule::by_name(db, self.resolver.krate().into(), name_ref.text())
.map(PathResolution::ToolModule)
})
.map(|it| (it, None)),
@@ -1361,7 +1361,7 @@ impl<'db> SourceAnalyzer<'db> {
// in this case we have to check for inert/builtin attributes and tools and prioritize
// resolution of attributes over other namespaces
if let Some(name_ref) = path.as_single_name_ref() {
- let builtin = BuiltinAttr::builtin(&name_ref.text());
+ let builtin = BuiltinAttr::builtin(name_ref.text());
if builtin.is_some() {
return builtin.map(|it| (PathResolution::BuiltinAttr(it), None));
}
@@ -1411,7 +1411,7 @@ impl<'db> SourceAnalyzer<'db> {
.first_segment()
.and_then(|it| it.name_ref())
.and_then(|name_ref| {
- ToolModule::by_name(db, self.resolver.krate().into(), &name_ref.text())
+ ToolModule::by_name(db, self.resolver.krate().into(), name_ref.text())
.map(PathResolution::ToolModule)
})
.map(|it| (it, None)),
diff --git a/crates/ide-assists/src/handlers/apply_demorgan.rs b/crates/ide-assists/src/handlers/apply_demorgan.rs
index 10262445a2..e2c1048bdb 100644
--- a/crates/ide-assists/src/handlers/apply_demorgan.rs
+++ b/crates/ide-assists/src/handlers/apply_demorgan.rs
@@ -206,7 +206,7 @@ pub(crate) fn apply_demorgan_iterator(
let closure_body = closure_expr.body()?;
let op_range = method_call.syntax().text_range();
- let label = format!("Apply De Morgan's law to `Iterator::{}`", name.text().as_str());
+ let label = format!("Apply De Morgan's law to `Iterator::{}`", name.text());
acc.add_group(
&GroupLabel("Apply De Morgan's law".to_owned()),
AssistId::refactor_rewrite("apply_demorgan_iterator"),
@@ -216,7 +216,7 @@ pub(crate) fn apply_demorgan_iterator(
let editor = builder.make_editor(method_call.syntax());
let make = editor.make();
// replace the method name
- let new_name = match name.text().as_str() {
+ let new_name = match name.text() {
"all" => make.name_ref("any"),
"any" => make.name_ref("all"),
"is_some_and" => make.name_ref("is_none_or"),
diff --git a/crates/ide-assists/src/handlers/convert_closure_to_fn.rs b/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
index c9f5e0a4fb..83effa1182 100644
--- a/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
+++ b/crates/ide-assists/src/handlers/convert_closure_to_fn.rs
@@ -507,7 +507,7 @@ fn wrap_capture_in_deref_if_needed(
capture_kind: CaptureKind,
is_ref: bool,
) -> ast::Expr {
- let capture_name = make.expr_path(make.path_from_text(&capture_name.text()));
+ let capture_name = make.expr_path(make.path_from_text(capture_name.text()));
if capture_kind == CaptureKind::Move || is_ref {
return capture_name;
}
diff --git a/crates/ide-assists/src/handlers/convert_into_to_from.rs b/crates/ide-assists/src/handlers/convert_into_to_from.rs
index a01a66e7b1..c8de14bed4 100644
--- a/crates/ide-assists/src/handlers/convert_into_to_from.rs
+++ b/crates/ide-assists/src/handlers/convert_into_to_from.rs
@@ -109,7 +109,7 @@ pub(crate) fn convert_into_to_from(acc: &mut Assists, ctx: &AssistContext<'_, '_
editor.replace(into_fn_name.syntax(), make.name("from").syntax());
for s in selfs {
- match s.text().as_ref() {
+ match s.text() {
"self" => editor.replace(s.syntax(), make.name_ref("val").syntax()),
"Self" => {
if let Some(path_segment) =
diff --git a/crates/ide-assists/src/handlers/convert_match_to_let_else.rs b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
index 9dffdf3f36..db084c6ea2 100644
--- a/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
+++ b/crates/ide-assists/src/handlers/convert_match_to_let_else.rs
@@ -148,8 +148,7 @@ fn rename_variable(pat: &ast::Pat, extracted: &[Name], binding: ast::Pat) -> Syn
if let Some(name_ref) = record_pat_field.field_name() {
editor.replace(
record_pat_field.syntax(),
- make.record_pat_field(make.name_ref(&name_ref.text()), binding.clone())
- .syntax(),
+ make.record_pat_field(make.name_ref(name_ref.text()), binding.clone()).syntax(),
);
}
} else {
diff --git a/crates/ide-assists/src/handlers/convert_range_for_to_while.rs b/crates/ide-assists/src/handlers/convert_range_for_to_while.rs
index 7026b5bafd..ae8f626c5d 100644
--- a/crates/ide-assists/src/handlers/convert_range_for_to_while.rs
+++ b/crates/ide-assists/src/handlers/convert_range_for_to_while.rs
@@ -74,7 +74,7 @@ pub(crate) fn convert_range_for_to_while(
let mut elements = vec![];
- let var_expr = make.expr_path(make.ident_path(&name.text()));
+ let var_expr = make.expr_path(make.ident_path(name.text()));
let op = ast::BinaryOp::CmpOp(ast::CmpOp::Ord {
ordering: ast::Ordering::Less,
strict: !inclusive,
diff --git a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs
index eb74e91075..0bb9bf12b1 100644
--- a/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs
+++ b/crates/ide-assists/src/handlers/convert_tuple_struct_to_named_struct.rs
@@ -194,7 +194,7 @@ fn process_struct_name_reference(
let range = ctx.sema.original_range_opt(pat.syntax())?.range;
let place = cover_edit_range(source.syntax(), range);
let elements = vec![
- make.name_ref(&name.text()).syntax().clone().into(),
+ make.name_ref(name.text()).syntax().clone().into(),
make.token(T![:]).into(),
make.whitespace(" ").into(),
];
@@ -237,7 +237,7 @@ fn process_struct_name_reference(
let range = ctx.sema.original_range_opt(expr.syntax())?.range;
let place = cover_edit_range(source.syntax(), range);
let elements = vec![
- make.name_ref(&name.text()).syntax().clone().into(),
+ make.name_ref(name.text()).syntax().clone().into(),
make.token(T![:]).into(),
make.whitespace(" ").into(),
];
diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs
index c2eb49dde5..46333ed726 100644
--- a/crates/ide-assists/src/handlers/extract_function.rs
+++ b/crates/ide-assists/src/handlers/extract_function.rs
@@ -934,7 +934,7 @@ impl FunctionBody {
};
// FIXME: make trait arguments
- let trait_name = trait_name.map(|name| make.ty_path(make.ident_path(&name.text())).into());
+ let trait_name = trait_name.map(|name| make.ty_path(make.ident_path(name.text())).into());
let parent = self.parent()?;
let parents = generic_parents(&parent);
@@ -1561,7 +1561,7 @@ fn format_function<'db>(
old_indent: IndentLevel,
make: &SyntaxFactory,
) -> ast::Fn {
- let fun_name = make.name(&fun.name.text());
+ let fun_name = make.name(fun.name.text());
let params = fun.make_param_list(make, ctx, module, fun.mods.edition);
let ret_ty = fun.make_ret_ty(make, ctx, module);
let body = make_body(make, ctx, old_indent, fun);
diff --git a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
index 5e6e74bc94..c1ac4f1724 100644
--- a/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs
@@ -241,7 +241,7 @@ fn tag_generics_in_variant(ty: &ast::Type, generics: &mut [(ast::GenericParam, b
if matches!(token.kind(), T![lifetime_ident]) =>
{
if let Some(lt) = lt.lifetime()
- && lt.text().as_str() == token.text()
+ && lt.text() == token.text()
{
*tag = true;
tagged_one = true;
@@ -250,18 +250,15 @@ fn tag_generics_in_variant(ty: &ast::Type, generics: &mut [(ast::GenericParam, b
}
param if matches!(token.kind(), T![ident]) => {
if match param {
- ast::GenericParam::ConstParam(konst) => konst
- .name()
- .map(|name| name.text().as_str() == token.text())
- .unwrap_or_default(),
- ast::GenericParam::TypeParam(ty) => ty
- .name()
- .map(|name| name.text().as_str() == token.text())
- .unwrap_or_default(),
- ast::GenericParam::LifetimeParam(lt) => lt
- .lifetime()
- .map(|lt| lt.text().as_str() == token.text())
- .unwrap_or_default(),
+ ast::GenericParam::ConstParam(konst) => {
+ konst.name().map(|name| name.text() == token.text()).unwrap_or_default()
+ }
+ ast::GenericParam::TypeParam(ty) => {
+ ty.name().map(|name| name.text() == token.text()).unwrap_or_default()
+ }
+ ast::GenericParam::LifetimeParam(lt) => {
+ lt.lifetime().map(|lt| lt.text() == token.text()).unwrap_or_default()
+ }
} {
*tag = true;
tagged_one = true;
@@ -338,7 +335,7 @@ fn update_variant(
// FIXME: replace with a `ast::make` constructor
let ty = match generic_args {
Some(generic_args) => make.ty(&format!("{name}{generic_args}")),
- None => make.ty(&name.text()),
+ None => make.ty(name.text()),
};
// change from a record to a tuple field list
diff --git a/crates/ide-assists/src/handlers/extract_type_alias.rs b/crates/ide-assists/src/handlers/extract_type_alias.rs
index 329f8325b4..a378256b59 100644
--- a/crates/ide-assists/src/handlers/extract_type_alias.rs
+++ b/crates/ide-assists/src/handlers/extract_type_alias.rs
@@ -145,7 +145,7 @@ fn collect_used_generics<'gp>(
.filter_map(|it| match it {
ast::GenericArg::LifetimeArg(lt) => {
let lt = lt.lifetime()?;
- known_generics.iter().find(find_lifetime(&lt.text()))
+ known_generics.iter().find(find_lifetime(lt.text()))
}
_ => None,
}),
@@ -157,7 +157,7 @@ fn collect_used_generics<'gp>(
generics.extend(
it.bounds()
.filter_map(|it| it.lifetime())
- .filter_map(|lt| known_generics.iter().find(find_lifetime(&lt.text()))),
+ .filter_map(|lt| known_generics.iter().find(find_lifetime(lt.text()))),
);
}
}
@@ -166,13 +166,12 @@ fn collect_used_generics<'gp>(
generics.extend(
it.bounds()
.filter_map(|it| it.lifetime())
- .filter_map(|lt| known_generics.iter().find(find_lifetime(&lt.text()))),
+ .filter_map(|lt| known_generics.iter().find(find_lifetime(lt.text()))),
);
}
}
ast::Type::RefType(ref_) => generics.extend(
- ref_.lifetime()
- .and_then(|lt| known_generics.iter().find(find_lifetime(&lt.text()))),
+ ref_.lifetime().and_then(|lt| known_generics.iter().find(find_lifetime(lt.text()))),
),
ast::Type::ArrayType(ar) => {
if let Some(ast::Expr::PathExpr(p)) = ar.const_arg().and_then(|x| x.expr())
diff --git a/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs b/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs
index acd98aed00..738f461a1f 100644
--- a/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs
+++ b/crates/ide-assists/src/handlers/generate_blanket_trait_impl.rs
@@ -75,12 +75,12 @@ pub(crate) fn generate_blanket_trait_impl(
|builder| {
let editor = builder.make_editor(traitd.syntax());
let make = editor.make();
- let namety = make.ty_path(make.path_from_text(&name.text()));
+ let namety = make.ty_path(make.path_from_text(name.text()));
let trait_where_clause = traitd.where_clause().map(|it| it.reset_indent());
let bounds = traitd.type_bound_list().and_then(|list| exclude_sized(make, list));
let is_unsafe = traitd.unsafe_token().is_some();
let thisname = this_name(make, &traitd);
- let thisty = make.ty_path(make.path_from_text(&thisname.text()));
+ let thisty = make.ty_path(make.path_from_text(thisname.text()));
let indent = traitd.indent_level();
let gendecl = make.generic_param_list([GenericParam::TypeParam(make.type_param(
diff --git a/crates/ide-assists/src/handlers/generate_default_from_enum_variant.rs b/crates/ide-assists/src/handlers/generate_default_from_enum_variant.rs
index 713d6a3fb7..07c191b0eb 100644
--- a/crates/ide-assists/src/handlers/generate_default_from_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/generate_default_from_enum_variant.rs
@@ -76,7 +76,7 @@ pub(crate) fn generate_default_from_enum_variant(
fn default_impl(variant_name: ast::Name, adt: &ast::Adt, make: &SyntaxFactory) -> ast::Impl {
let impl_ = utils::generate_trait_impl_intransitive(make, adt, make.ty("Default"));
- let fn_ = default_fn(&variant_name.text(), make);
+ let fn_ = default_fn(variant_name.text(), make);
let (impl_editor, impl_) = SyntaxEditor::with_ast_node(&impl_);
impl_
diff --git a/crates/ide-assists/src/handlers/generate_enum_is_method.rs b/crates/ide-assists/src/handlers/generate_enum_is_method.rs
index 53e77b4947..5e2ee772b9 100644
--- a/crates/ide-assists/src/handlers/generate_enum_is_method.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_is_method.rs
@@ -141,7 +141,7 @@ impl Method {
};
let variant_name = variant.name()?;
- let fn_name = format!("is_{}", to_lower_snake_case(&variant_name.text()));
+ let fn_name = format!("is_{}", to_lower_snake_case(variant_name.text()));
Some(Method { pattern_suffix, fn_name, variant_name })
}
}
diff --git a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs
index 8a194ae02b..479143c133 100644
--- a/crates/ide-assists/src/handlers/generate_enum_projection_method.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_projection_method.rs
@@ -219,7 +219,7 @@ impl Method {
fn new(variant: &ast::Variant, fn_name_prefix: &str) -> Option<Self> {
use itertools::Itertools as _;
let variant_name = variant.name()?;
- let fn_name = format!("{fn_name_prefix}_{}", to_lower_snake_case(&variant_name.text()));
+ let fn_name = format!("{fn_name_prefix}_{}", to_lower_snake_case(variant_name.text()));
match variant.kind() {
ast::StructKind::Record(record) => {
diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs
index fb43e3eaa3..73837f486c 100644
--- a/crates/ide-assists/src/handlers/generate_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs
@@ -62,7 +62,7 @@ pub(crate) fn generate_enum_variant(acc: &mut Assists, ctx: &AssistContext<'_, '
let editor = builder.make_editor(enum_node.syntax());
let make = editor.make();
let field_list = parent.make_field_list(ctx, make);
- let variant = make.variant(None, make.name(&name_ref.text()), field_list, None);
+ let variant = make.variant(None, make.name(name_ref.text()), field_list, None);
if let Some(it) = enum_node.variant_list() {
it.add_variant(&editor, &variant);
}
diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs
index 3c3fde80f9..13096c6efc 100644
--- a/crates/ide-assists/src/handlers/generate_function.rs
+++ b/crates/ide-assists/src/handlers/generate_function.rs
@@ -67,7 +67,7 @@ fn gen_fn(acc: &mut Assists, ctx: &AssistContext<'_, '_>) -> Option<()> {
return None;
}
- let fn_name = &*name_ref.text();
+ let fn_name = name_ref.text();
let TargetInfo { target_module, adt_info, target, file } =
fn_target_info(ctx, path, &call, fn_name)?;
@@ -159,7 +159,7 @@ fn gen_method(acc: &mut Assists, ctx: &AssistContext<'_, '_>) -> Option<()> {
let (impl_, file) = if let Some(impl_) = cursor_impl {
(Some(impl_), ctx.vfs_file_id())
} else {
- get_adt_source(ctx, &adt, fn_name.text().as_str())?
+ get_adt_source(ctx, &adt, fn_name.text())?
};
let target = get_method_target(ctx, &impl_, &adt)?;
@@ -269,7 +269,7 @@ impl FunctionBuilder {
// If generated function has the name "new" and is an associated function, we generate fn body
// as a constructor and assume a "Self" return type.
if let Some(body) =
- make_fn_body_as_new_function(make, ctx, &fn_name.text(), adt_info, target_edition)
+ make_fn_body_as_new_function(make, ctx, fn_name.text(), adt_info, target_edition)
{
ret_type = Some(make.ret_type(make.ty_path(make.ident_path("Self")).into()));
should_focus_return_type = false;
diff --git a/crates/ide-assists/src/handlers/generate_getter_or_setter.rs b/crates/ide-assists/src/handlers/generate_getter_or_setter.rs
index 7e5d5cec71..b21e608762 100644
--- a/crates/ide-assists/src/handlers/generate_getter_or_setter.rs
+++ b/crates/ide-assists/src/handlers/generate_getter_or_setter.rs
@@ -225,7 +225,7 @@ fn generate_getter_from_info(
(
make.ty_ref(record_field_info.field_ty.clone(), true),
make.expr_ref(
- make.expr_field(self_expr, &record_field_info.field_name.text()).into(),
+ make.expr_field(self_expr, record_field_info.field_name.text()).into(),
true,
),
)
@@ -250,7 +250,7 @@ fn generate_getter_from_info(
make.expr_ref(
make.expr_field(
make.expr_path(make.ident_path("self")),
- &record_field_info.field_name.text(),
+ record_field_info.field_name.text(),
)
.into(),
false,
diff --git a/crates/ide-assists/src/handlers/generate_impl.rs b/crates/ide-assists/src/handlers/generate_impl.rs
index ab0eb56fcf..ecff6267bb 100644
--- a/crates/ide-assists/src/handlers/generate_impl.rs
+++ b/crates/ide-assists/src/handlers/generate_impl.rs
@@ -185,7 +185,7 @@ pub(crate) fn generate_impl_trait(acc: &mut Assists, ctx: &AssistContext<'_, '_>
None,
None,
false,
- make.ty(&name.text()),
+ make.ty(name.text()),
make.ty_placeholder(),
None,
None,
diff --git a/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs b/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
index fd095dd9b2..6858b62f8d 100644
--- a/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
+++ b/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
@@ -210,7 +210,7 @@ fn get_trait_mut(apply_trait: &hir::Trait, famous: FamousDefs<'_, '_>) -> Option
}
fn process_method_name(name: ast::Name) -> Option<(ast::Name, &'static str)> {
- let new_name = match &*name.text() {
+ let new_name = match name.text() {
"index" => "index_mut",
"as_ref" => "as_mut",
"borrow" => "borrow_mut",
diff --git a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
index d5629e2e7e..242712ff2e 100644
--- a/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
+++ b/crates/ide-assists/src/handlers/generate_single_field_struct_from.rs
@@ -4,14 +4,11 @@ use ide_db::{
RootDatabase, famous_defs::FamousDefs, helpers::mod_path_to_ast_with_factory,
imports::import_assets::item_for_path_search,
};
-use syntax::syntax_editor::{Position, SyntaxEditor};
-use syntax::{
- TokenText,
- ast::{
- self, AstNode, HasAttrs, HasGenericParams, HasName, edit::AstNodeEdit,
- syntax_factory::SyntaxFactory,
- },
+use syntax::ast::{
+ self, AstNode, HasAttrs, HasGenericParams, HasName, edit::AstNodeEdit,
+ syntax_factory::SyntaxFactory,
};
+use syntax::syntax_editor::{Position, SyntaxEditor};
use crate::{
AssistId,
@@ -71,8 +68,7 @@ pub(crate) fn generate_single_field_struct_from(
return None;
}
- let main_field_name =
- names.as_ref().map_or(TokenText::borrowed("value"), |names| names[main_field_i].text());
+ let main_field_name = names.as_ref().map_or("value", |names| names[main_field_i].text());
let main_field_ty = types[main_field_i].clone();
acc.add(
@@ -92,10 +88,10 @@ pub(crate) fn generate_single_field_struct_from(
false,
));
- let ty = make.ty(&strukt_name.text());
+ let ty = make.ty(strukt_name.text());
let constructor =
- make_adt_constructor(names.as_deref(), constructors, &main_field_name, make);
+ make_adt_constructor(names.as_deref(), constructors, main_field_name, make);
let body = make.block_expr([], Some(constructor));
let fn_ = make
@@ -108,7 +104,7 @@ pub(crate) fn generate_single_field_struct_from(
make.param_list(
None,
[make.param(
- make.path_pat(make.path_from_text(&main_field_name)),
+ make.path_pat(make.path_from_text(main_field_name)),
main_field_ty,
)],
),
@@ -161,12 +157,12 @@ pub(crate) fn generate_single_field_struct_from(
fn make_adt_constructor(
names: Option<&[ast::Name]>,
constructors: Vec<Option<ast::Expr>>,
- main_field_name: &TokenText<'_>,
+ main_field_name: &str,
make: &SyntaxFactory,
) -> ast::Expr {
if let Some(names) = names {
let fields = make.record_expr_field_list(names.iter().zip(constructors).map(
- |(name, initializer)| make.record_expr_field(make.name_ref(&name.text()), initializer),
+ |(name, initializer)| make.record_expr_field(make.name_ref(name.text()), initializer),
));
make.record_expr(make.path_from_text("Self"), fields).into()
} else {
diff --git a/crates/ide-assists/src/handlers/generate_trait_from_impl.rs b/crates/ide-assists/src/handlers/generate_trait_from_impl.rs
index 12afd9ae6a..354447cf33 100644
--- a/crates/ide-assists/src/handlers/generate_trait_from_impl.rs
+++ b/crates/ide-assists/src/handlers/generate_trait_from_impl.rs
@@ -117,7 +117,7 @@ pub(crate) fn generate_trait_from_impl(
let params = used_params(&impl_ast, make, ctx);
let trait_ast = make.trait_(
false,
- &trait_name(&impl_assoc_items, make).text(),
+ trait_name(&impl_assoc_items, make).text(),
params.clone(),
impl_ast.where_clause(),
trait_items,
@@ -204,7 +204,7 @@ fn trait_name(items: &ast::AssocItemList, make: &SyntaxFactory) -> ast::Name {
fn_names
.next()
.and_then(|name| {
- fn_names.next().is_none().then(|| make.name(&stdx::to_camel_case(&name.text())))
+ fn_names.next().is_none().then(|| make.name(&stdx::to_camel_case(name.text())))
})
.unwrap_or_else(|| make.name("NewTrait"))
}
diff --git a/crates/ide-assists/src/handlers/inline_type_alias.rs b/crates/ide-assists/src/handlers/inline_type_alias.rs
index bb76e2743c..f5d5400404 100644
--- a/crates/ide-assists/src/handlers/inline_type_alias.rs
+++ b/crates/ide-assists/src/handlers/inline_type_alias.rs
@@ -140,7 +140,7 @@ pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_, '_>)
let src = adt.source(ctx.db())?.value;
let name = src.name()?;
let generic_params = src.generic_param_list();
- let name_ref = make.name_ref(&name.text());
+ let name_ref = make.name_ref(name.text());
let segment = match generic_params {
Some(params) => {
make.path_segment_generics(name_ref, params.to_generic_args(&make))
diff --git a/crates/ide-assists/src/handlers/merge_match_arms.rs b/crates/ide-assists/src/handlers/merge_match_arms.rs
index f41769150c..5060886cfa 100644
--- a/crates/ide-assists/src/handlers/merge_match_arms.rs
+++ b/crates/ide-assists/src/handlers/merge_match_arms.rs
@@ -165,7 +165,7 @@ fn get_arm_types<'db>(
{
let pat_type = ctx.sema.type_of_binding_in_pat(ident_pat);
- map.insert(name.text().to_string(), pat_type);
+ map.insert(name.text().to_owned(), pat_type);
}
}
_ => (),
diff --git a/crates/ide-assists/src/handlers/reorder_impl_items.rs b/crates/ide-assists/src/handlers/reorder_impl_items.rs
index 658947abe1..ed5a372e54 100644
--- a/crates/ide-assists/src/handlers/reorder_impl_items.rs
+++ b/crates/ide-assists/src/handlers/reorder_impl_items.rs
@@ -82,7 +82,7 @@ pub(crate) fn reorder_impl_items(acc: &mut Assists, ctx: &AssistContext<'_, '_>)
ast::AssocItem::MacroCall(_) => None,
};
- name.and_then(|n| ranks.get(n.text().as_str().trim_start_matches("r#")).copied())
+ name.and_then(|n| ranks.get(n.text().trim_start_matches("r#")).copied())
.unwrap_or(usize::MAX)
})
.collect();
diff --git a/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs b/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
index 17ee8597c1..a414db0a6c 100644
--- a/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
+++ b/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
@@ -39,7 +39,7 @@ pub(crate) fn replace_with_lazy_method(
let (_, receiver_ty) = callable.receiver_param(ctx.sema.db)?;
let n_params = callable.n_params() + 1;
- let method_name_lazy = lazy_method_name(&method_name.text());
+ let method_name_lazy = lazy_method_name(method_name.text());
receiver_ty.iterate_method_candidates_with_traits(
ctx.sema.db,
@@ -156,7 +156,7 @@ pub(crate) fn replace_with_eager_method(
}
let method_name_text = method_name.text();
- let method_name_eager = eager_method_name(&method_name_text)?;
+ let method_name_eager = eager_method_name(method_name_text)?;
receiver_ty.iterate_method_candidates_with_traits(
ctx.sema.db,
diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs
index 670a030255..388aac19b4 100644
--- a/crates/ide-assists/src/utils.rs
+++ b/crates/ide-assists/src/utils.rs
@@ -344,7 +344,7 @@ fn invert_special_case(make: &SyntaxFactory, expr: &ast::Expr) -> Option<ast::Ex
let method = mce.name_ref()?;
let arg_list = mce.arg_list()?;
- let method = match method.text().as_str() {
+ let method = match method.text() {
"is_some" => "is_none",
"is_none" => "is_some",
"is_ok" => "is_err",
@@ -550,7 +550,7 @@ fn has_any_fn(imp: &ast::Impl, names: &[String]) -> bool {
for item in il.assoc_items() {
if let ast::AssocItem::Fn(f) = item
&& let Some(name) = f.name()
- && names.iter().any(|n| n.eq_ignore_ascii_case(&name.text()))
+ && names.iter().any(|n| n.eq_ignore_ascii_case(name.text()))
{
return true;
}
@@ -664,7 +664,7 @@ fn generate_impl_inner(
.zip(generic_params.as_ref())
.and_then(|(trait_, params)| generic_param_associated_bounds(make, adt, trait_, params));
- let ty: ast::Type = make.ty_path(make.ident_path(&adt.name().unwrap().text())).into();
+ let ty: ast::Type = make.ty_path(make.ident_path(adt.name().unwrap().text())).into();
let cfg_attrs = adt.attrs().filter(|attr| matches!(attr.meta(), Some(ast::Meta::CfgMeta(_))));
match trait_ {
diff --git a/crates/ide-assists/src/utils/gen_trait_fn_body.rs b/crates/ide-assists/src/utils/gen_trait_fn_body.rs
index c0ddcb950c..277b5bd8df 100644
--- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs
+++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs
@@ -21,7 +21,7 @@ pub(crate) fn gen_trait_fn_body(
trait_ref: Option<TraitRef<'_>>,
) -> Option<ast::BlockExpr> {
let _ = func.body()?;
- match trait_path.segment()?.name_ref()?.text().as_str() {
+ match trait_path.segment()?.name_ref()?.text() {
"Clone" => {
stdx::always!(func.name().is_some_and(|name| name.text() == "clone"));
gen_clone_impl(make, adt)
diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs
index 109ebce01c..c2d7cb98cf 100644
--- a/crates/ide-completion/src/completions/attribute.rs
+++ b/crates/ide-completion/src/completions/attribute.rs
@@ -40,7 +40,6 @@ pub(crate) fn complete_known_attribute_input(
let path = attribute.path()?;
let segments = path.segments().map(|s| s.name_ref()).collect::<Option<Vec<_>>>()?;
let segments = segments.iter().map(|n| n.text()).collect::<Vec<_>>();
- let segments = segments.iter().map(|t| t.as_str()).collect::<Vec<_>>();
let tt = attribute.token_tree()?;
match segments.as_slice() {
diff --git a/crates/ide-completion/src/completions/attribute/repr.rs b/crates/ide-completion/src/completions/attribute/repr.rs
index 63cddb365e..73ba847e7e 100644
--- a/crates/ide-completion/src/completions/attribute/repr.rs
+++ b/crates/ide-completion/src/completions/attribute/repr.rs
@@ -23,7 +23,7 @@ pub(super) fn complete_repr(
})
.any(|it| {
let text = it.text();
- lookup.unwrap_or(label) == text || collides.contains(&text.as_str())
+ lookup.unwrap_or(label) == text || collides.contains(&text)
});
if repr_already_annotated {
continue;
diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs
index 5a3a3ac39c..34b53e5e5b 100644
--- a/crates/ide-completion/src/completions/postfix.rs
+++ b/crates/ide-completion/src/completions/postfix.rs
@@ -365,7 +365,7 @@ fn suggest_receiver_name(
match receiver {
ast::Expr::PathExpr(path) => {
if let Some(name) = path.path().and_then(|it| it.as_single_name_ref()) {
- return placeholder(name.text().as_str());
+ return placeholder(name.text());
}
}
ast::Expr::RefExpr(it) => {
diff --git a/crates/ide-db/src/imports/import_assets.rs b/crates/ide-db/src/imports/import_assets.rs
index f5dff47acf..422648c8d6 100644
--- a/crates/ide-db/src/imports/import_assets.rs
+++ b/crates/ide-db/src/imports/import_assets.rs
@@ -979,7 +979,7 @@ impl<'db> ImportCandidate<'db> {
return None;
}
let after = std::iter::successors(path.parent_path(), |it| it.parent_path())
- .map(|seg| seg.segment()?.name_ref().map(|name| Name::new_root(&name.text())))
+ .map(|seg| seg.segment()?.name_ref().map(|name| Name::new_root(name.text())))
.collect::<Option<_>>()?;
path_import_candidate(
sema,
@@ -993,7 +993,7 @@ impl<'db> ImportCandidate<'db> {
fn for_name(sema: &Semantics<'db, RootDatabase>, name: &ast::Name) -> Option<Self> {
if sema
.scope(name.syntax())?
- .speculative_resolve(&make::ext::ident_path(&name.text()))
+ .speculative_resolve(&make::ext::ident_path(name.text()))
.is_some()
{
return None;
@@ -1033,7 +1033,7 @@ fn path_import_candidate<'db>(
if qualifier.first_qualifier().is_none_or(|it| sema.resolve_path(&it).is_none()) {
let qualifier = qualifier
.segments()
- .map(|seg| seg.name_ref().map(|name| Name::new_root(&name.text())))
+ .map(|seg| seg.name_ref().map(|name| Name::new_root(name.text())))
.collect::<Option<Vec<_>>>()?;
ImportCandidate::Path(PathImportCandidate {
qualifier,
diff --git a/crates/ide-db/src/imports/insert_use.rs b/crates/ide-db/src/imports/insert_use.rs
index 27e3ed6bdb..0235389763 100644
--- a/crates/ide-db/src/imports/insert_use.rs
+++ b/crates/ide-db/src/imports/insert_use.rs
@@ -314,7 +314,7 @@ impl ImportGroup {
PathSegmentKind::SelfKw => ImportGroup::ThisModule,
PathSegmentKind::SuperKw => ImportGroup::SuperModule,
PathSegmentKind::CrateKw => ImportGroup::ThisCrate,
- PathSegmentKind::Name(name) => match name.text().as_str() {
+ PathSegmentKind::Name(name) => match name.text() {
"std" => ImportGroup::Std,
"core" => ImportGroup::Std,
_ => ImportGroup::ExternCrate,
diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs
index 59099056f5..f9251458fd 100644
--- a/crates/ide-db/src/imports/merge_imports.rs
+++ b/crates/ide-db/src/imports/merge_imports.rs
@@ -582,8 +582,8 @@ fn path_segment_cmp(a: &ast::PathSegment, b: &ast::PathSegment) -> Ordering {
(Some(_), None) => Ordering::Greater,
(None, Some(_)) => Ordering::Less,
(Some(a_name), Some(b_name)) => {
- let a_text = a_name.as_str().trim_start_matches("r#");
- let b_text = b_name.as_str().trim_start_matches("r#");
+ let a_text = a_name.trim_start_matches("r#");
+ let b_text = b_name.trim_start_matches("r#");
version_sort::version_sort(a_text, b_text)
}
}
@@ -614,15 +614,13 @@ fn use_tree_cmp_by_tree_list_glob_or_alias(
.name()
.as_ref()
.map(ast::Name::text)
- .as_ref()
- .map_or("_", |a_name| a_name.as_str().trim_start_matches("r#"))
+ .map_or("_", |a_name| a_name.trim_start_matches("r#"))
.cmp(
b_rename
.name()
.as_ref()
.map(ast::Name::text)
- .as_ref()
- .map_or("_", |b_name| b_name.as_str().trim_start_matches("r#")),
+ .map_or("_", |b_name| b_name.trim_start_matches("r#")),
),
},
};
diff --git a/crates/ide-db/src/path_transform.rs b/crates/ide-db/src/path_transform.rs
index 101046cf54..ff32badd7f 100644
--- a/crates/ide-db/src/path_transform.rs
+++ b/crates/ide-db/src/path_transform.rs
@@ -536,7 +536,7 @@ impl Ctx<'_> {
let name = ident_pat.name()?;
let make = editor.make();
- let temp_path = make.path_from_text(&name.text());
+ let temp_path = make.path_from_text(name.text());
let resolution = self.source_scope.speculative_resolve(&temp_path)?;
@@ -651,7 +651,7 @@ fn find_trait_for_assoc_item(
});
for name in names {
- if assoc_item_name.as_str() == name.as_str() {
+ if assoc_item_name == name.as_str() {
// It is fine to return the first match because in case of
// multiple possibilities, the exact trait must be disambiguated
// in the definition of trait being implemented, so this search
diff --git a/crates/ide-db/src/ra_fixture.rs b/crates/ide-db/src/ra_fixture.rs
index c8607a8099..09a270c143 100644
--- a/crates/ide-db/src/ra_fixture.rs
+++ b/crates/ide-db/src/ra_fixture.rs
@@ -102,8 +102,7 @@ impl RaFixtureAnalysis {
else {
return false;
};
- segment1.text_non_mutable() == "rust_analyzer"
- && segment2.text_non_mutable() == "rust_fixture"
+ segment1.text() == "rust_analyzer" && segment2.text() == "rust_fixture"
})
});
if !has_rust_fixture_attr {
diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs
index b89c2fdf4a..16224ae5ee 100644
--- a/crates/ide-db/src/rename.rs
+++ b/crates/ide-db/src/rename.rs
@@ -459,7 +459,7 @@ fn rename_field_constructors(
};
expr.record_expr_field_list()?.fields().find_map(|record_field| {
if record_field.name_ref().is_none()
- && Name::new_root(&record_field.field_name()?.text()) == old_name
+ && Name::new_root(record_field.field_name()?.text()) == old_name
&& let ast::Expr::PathExpr(field_name) = record_field.expr()?
{
field_name.path()
@@ -734,7 +734,7 @@ fn source_edit_from_def<'db>(
// special cases required for renaming fields/locals in Record patterns
if let Some(pat_field) = pat.syntax().parent().and_then(ast::RecordPatField::cast) {
if let Some(name_ref) = pat_field.name_ref() {
- if new_name.as_str() == name_ref.text().as_str().trim_start_matches("r#")
+ if new_name.as_str() == name_ref.text().trim_start_matches("r#")
&& pat.at_token().is_none()
{
// Foo { field: ref mut local } -> Foo { ref mut field }
@@ -747,7 +747,7 @@ fn source_edit_from_def<'db>(
.text_range()
.cover_offset(pat.syntax().text_range().start()),
);
- edit.replace(name_range, name_ref.text().to_string());
+ edit.replace(name_range, name_ref.text().to_owned());
} else {
// Foo { field: ref mut local @ local 2} -> Foo { field: ref mut new_name @ local2 }
// Foo { field: ref mut local } -> Foo { field: ref mut new_name }
diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs
index b688cb188d..6a492a5479 100644
--- a/crates/ide-db/src/search.rs
+++ b/crates/ide-db/src/search.rs
@@ -119,13 +119,13 @@ impl FileReferenceNode {
_ => None,
}
}
- pub fn text(&self) -> syntax::TokenText<'_> {
+ pub fn text(&self) -> &str {
match self {
FileReferenceNode::NameRef(name_ref) => name_ref.text(),
FileReferenceNode::Name(name) => name.text(),
FileReferenceNode::Lifetime(lifetime) => lifetime.text(),
FileReferenceNode::FormatStringEntry(it, range) => {
- syntax::TokenText::borrowed(&it.text()[*range - it.syntax().text_range().start()])
+ &it.text()[*range - it.syntax().text_range().start()]
}
}
}
@@ -751,7 +751,7 @@ impl<'a, 'db> FindUsages<'a, 'db> {
insert_type_alias(
sema.db,
&mut to_process,
- name.text().as_str(),
+ name.text(),
def.into(),
);
} else {
@@ -814,7 +814,7 @@ impl<'a, 'db> FindUsages<'a, 'db> {
insert_type_alias(
sema.db,
&mut to_process,
- name.text().as_str(),
+ name.text(),
def.into(),
);
} else {
diff --git a/crates/ide-ssr/src/resolving.rs b/crates/ide-ssr/src/resolving.rs
index 3dbba0ff2d..9d6079202a 100644
--- a/crates/ide-ssr/src/resolving.rs
+++ b/crates/ide-ssr/src/resolving.rs
@@ -155,7 +155,7 @@ impl<'db> Resolver<'_, 'db> {
fn path_contains_placeholder(&self, path: &ast::Path) -> bool {
if let Some(segment) = path.segment()
&& let Some(name_ref) = segment.name_ref()
- && self.placeholders_by_stand_in.contains_key(name_ref.text().as_str())
+ && self.placeholders_by_stand_in.contains_key(name_ref.text())
{
return true;
}
diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs
index 70d05cd3b5..de8cf971da 100644
--- a/crates/ide/src/doc_links.rs
+++ b/crates/ide/src/doc_links.rs
@@ -282,7 +282,7 @@ pub(crate) fn token_as_doc_comment(doc_token: &SyntaxToken) -> Option<DocComment
ast::Comment(comment) => TextSize::try_from(comment.prefix().len()).ok(),
ast::String(string) => {
doc_token.parent_ancestors().find_map(ast::Attr::cast).filter(|attr| attr.simple_name().as_deref() == Some("doc"))?;
- if doc_token.parent_ancestors().find_map(ast::MacroCall::cast).filter(|mac| mac.path().and_then(|p| p.segment()?.name_ref()).as_ref().map(|n| n.text()).as_deref() == Some("include_str")).is_some() {
+ if doc_token.parent_ancestors().find_map(ast::MacroCall::cast).filter(|mac| mac.path().and_then(|p| p.segment()?.name_ref()).as_ref().map(|n| n.text()) == Some("include_str")).is_some() {
return None;
}
string.open_quote_text_range().map(|it| it.len())
diff --git a/crates/ide/src/file_structure.rs b/crates/ide/src/file_structure.rs
index 21254fc4d6..1a85342dc9 100644
--- a/crates/ide/src/file_structure.rs
+++ b/crates/ide/src/file_structure.rs
@@ -106,7 +106,7 @@ fn structure_node(node: &SyntaxNode, config: &FileStructureConfig) -> Option<Str
Some(StructureNode {
parent: None,
- label: name.text().to_string(),
+ label: name.text().to_owned(),
navigation_range: name.syntax().text_range(),
node_range: node.syntax().text_range(),
kind,
diff --git a/crates/ide/src/inlay_hints/lifetime.rs b/crates/ide/src/inlay_hints/lifetime.rs
index 7a8a6eb84a..89a2d9fa97 100644
--- a/crates/ide/src/inlay_hints/lifetime.rs
+++ b/crates/ide/src/inlay_hints/lifetime.rs
@@ -204,7 +204,7 @@ fn hints_(
mut is_trivial: bool,
) -> Option<()> {
let is_elided = |lt: &Option<ast::Lifetime>| match lt {
- Some(lt) => matches!(lt.text().as_str(), "'_"),
+ Some(lt) => matches!(lt.text(), "'_"),
None => true,
};
let self_param = self_param.and_then(|it| {
@@ -298,12 +298,12 @@ fn hints_(
potential_lt_refs.for_each(|(name, ..)| {
let name = match name {
Some(it) if config.param_names_for_lifetime_elision_hints => {
- if let Some(c) = used_names.get_mut(it.text().as_str()) {
+ if let Some(c) = used_names.get_mut(it.text()) {
*c += 1;
- format_smolstr!("'{}{c}", it.text().as_str())
+ format_smolstr!("'{}{c}", it.text())
} else {
- used_names.insert(it.text().as_str().into(), 0);
- format_smolstr!("'{}", it.text().as_str())
+ used_names.insert(it.text().into(), 0);
+ format_smolstr!("'{}", it.text())
}
}
_ => gen_idx_name(),
@@ -316,7 +316,7 @@ fn hints_(
let output = match potential_lt_refs.as_slice() {
[(_, _, lifetime, _), ..] if self_param.is_some() || potential_lt_refs.len() == 1 => {
match lifetime {
- Some(lt) => match lt.text().as_str() {
+ Some(lt) => match lt.text() {
"'_" => allocated_lifetimes.first().cloned(),
"'static" => None,
name => Some(name.into()),
diff --git a/crates/ide/src/inlay_hints/param_name.rs b/crates/ide/src/inlay_hints/param_name.rs
index 5da8f2e162..fcf1304d4b 100644
--- a/crates/ide/src/inlay_hints/param_name.rs
+++ b/crates/ide/src/inlay_hints/param_name.rs
@@ -294,7 +294,7 @@ pub(super) fn is_argument_similar_to_param_name(
debug_assert!(!argument.is_empty());
debug_assert!(!param_name.is_empty());
let param_name = param_name.split('_');
- let argument = argument.iter().flat_map(|it| it.text_non_mutable().split('_'));
+ let argument = argument.iter().flat_map(|it| it.text().split('_'));
let argument = argument.map(|it| it.strip_prefix("r#").unwrap_or(it));
let prefix_match = zip(argument.clone(), param_name.clone())
@@ -313,7 +313,7 @@ pub(super) fn get_segment_representation(
let receiver =
method_call_expr.receiver().and_then(|expr| get_segment_representation(&expr));
let name_ref = method_call_expr.name_ref()?;
- if INSIGNIFICANT_METHOD_NAMES.contains(&name_ref.text().as_str()) {
+ if INSIGNIFICANT_METHOD_NAMES.contains(&name_ref.text()) {
return receiver;
}
Some(Either::Left(match receiver {
@@ -375,16 +375,16 @@ fn is_adt_constructor_similar_to_param_name(
) -> bool {
(|| match sema.resolve_path(path)? {
hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => {
- Some(to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name)
+ Some(to_lower_snake_case(path.segment()?.name_ref()?.text()) == param_name)
}
hir::PathResolution::Def(hir::ModuleDef::Function(_) | hir::ModuleDef::EnumVariant(_)) => {
- if to_lower_snake_case(&path.segment()?.name_ref()?.text()) == param_name {
+ if to_lower_snake_case(path.segment()?.name_ref()?.text()) == param_name {
return Some(true);
}
let qual = path.qualifier()?;
match sema.resolve_path(&qual)? {
hir::PathResolution::Def(hir::ModuleDef::Adt(_)) => {
- Some(to_lower_snake_case(&qual.segment()?.name_ref()?.text()) == param_name)
+ Some(to_lower_snake_case(qual.segment()?.name_ref()?.text()) == param_name)
}
_ => None,
}
diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs
index 125b2f495a..c3d620a357 100644
--- a/crates/ide/src/navigation_target.rs
+++ b/crates/ide/src/navigation_target.rs
@@ -190,7 +190,7 @@ impl NavigationTarget {
kind: SymbolKind,
) -> UpmappingResult<NavigationTarget> {
let name =
- value.name().map(|it| Symbol::intern(&it.text())).unwrap_or_else(|| sym::underscore);
+ value.name().map(|it| Symbol::intern(it.text())).unwrap_or_else(|| sym::underscore);
orig_range_with_focus(db, file_id, value.syntax(), value.name()).map(
|(FileRange { file_id, range: full_range }, focus_range)| {
diff --git a/crates/span/src/ast_id.rs b/crates/span/src/ast_id.rs
index 83a6748c01..369f383dbb 100644
--- a/crates/span/src/ast_id.rs
+++ b/crates/span/src/ast_id.rs
@@ -381,8 +381,8 @@ fn impl_ast_id(
let self_ty_name = type_as_name(node.self_ty());
let trait_name = type_as_name(node.trait_());
let data = ImplFileAstId {
- self_ty_name: self_ty_name.as_ref().map(|it| it.text_non_mutable()),
- trait_name: trait_name.as_ref().map(|it| it.text_non_mutable()),
+ self_ty_name: self_ty_name.as_ref().map(|it| it.text()),
+ trait_name: trait_name.as_ref().map(|it| it.text()),
};
Some(index_map.new_id(ErasedFileAstIdKind::Impl, data))
} else {
@@ -473,7 +473,7 @@ macro_rules! register_has_name_ast_id {
$(
ast::$ident(node) => {
let name = node.$name_method();
- let name = name.as_ref().map_or("", |it| it.text_non_mutable());
+ let name = name.as_ref().map_or("", |it| it.text());
let result = ErasedHasNameFileAstId {
name,
};
@@ -519,7 +519,7 @@ macro_rules! register_assoc_item_ast_id {
$(
ast::$ident(node) => {
let name = $name_callback(node);
- let name = name.as_ref().map_or("", |it| it.text_non_mutable());
+ let name = name.as_ref().map_or("", |it| it.text());
let properties = ErasedHasNameFileAstId {
name,
};
diff --git a/crates/syntax/src/ast/edit.rs b/crates/syntax/src/ast/edit.rs
index 080f9a7c6b..852b13fc7a 100644
--- a/crates/syntax/src/ast/edit.rs
+++ b/crates/syntax/src/ast/edit.rs
@@ -360,7 +360,7 @@ impl ast::RecordExprField {
// shorthand `{ x }` → expand to `{ x: expr }`
let new_field = editor
.make()
- .record_expr_field(editor.make().name_ref(&name_ref.text()), Some(expr));
+ .record_expr_field(editor.make().name_ref(name_ref.text()), Some(expr));
editor.replace(self.syntax(), new_field.syntax());
}
}
diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs
index 1eb658f4b8..43bca6ed9e 100644
--- a/crates/syntax/src/ast/node_ext.rs
+++ b/crates/syntax/src/ast/node_ext.rs
@@ -3,7 +3,7 @@
//!
//! These methods should only do simple, shallow tasks related to the syntax of the node itself.
-use std::{borrow::Cow, fmt, iter::successors};
+use std::{fmt, iter::successors};
use itertools::Itertools;
use parser::SyntaxKind;
@@ -11,7 +11,7 @@ use rowan::{GreenNodeData, GreenTokenData};
use smallvec::{SmallVec, smallvec};
use crate::{
- NodeOrToken, SmolStr, SyntaxElement, SyntaxElementChildren, SyntaxToken, T, TokenText,
+ NodeOrToken, SmolStr, SyntaxElement, SyntaxElementChildren, SyntaxToken, T,
ast::{
self, AstNode, AstToken, HasAttrs, HasGenericArgs, HasGenericParams, HasName,
HasTypeBounds, SyntaxNode, support,
@@ -22,41 +22,21 @@ use crate::{
use super::{GenericParam, RangeItem, RangeOp};
impl ast::Lifetime {
- pub fn text(&self) -> TokenText<'_> {
+ pub fn text(&self) -> &str {
text_of_first_token(self.syntax())
}
}
impl ast::Name {
- pub fn text(&self) -> TokenText<'_> {
+ pub fn text(&self) -> &str {
text_of_first_token(self.syntax())
}
- pub fn text_non_mutable(&self) -> &str {
- fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData {
- green_ref.children().next().and_then(NodeOrToken::into_token).unwrap()
- }
-
- match self.syntax().green() {
- Cow::Borrowed(green_ref) => first_token(green_ref).text(),
- Cow::Owned(_) => unreachable!(),
- }
- }
}
impl ast::NameRef {
- pub fn text(&self) -> TokenText<'_> {
+ pub fn text(&self) -> &str {
text_of_first_token(self.syntax())
}
- pub fn text_non_mutable(&self) -> &str {
- fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData {
- green_ref.children().next().and_then(NodeOrToken::into_token).unwrap()
- }
-
- match self.syntax().green() {
- Cow::Borrowed(green_ref) => first_token(green_ref).text(),
- Cow::Owned(_) => unreachable!(),
- }
- }
pub fn as_tuple_field(&self) -> Option<usize> {
self.text().parse().ok()
@@ -67,15 +47,12 @@ impl ast::NameRef {
}
}
-fn text_of_first_token(node: &SyntaxNode) -> TokenText<'_> {
+fn text_of_first_token(node: &SyntaxNode) -> &str {
fn first_token(green_ref: &GreenNodeData) -> &GreenTokenData {
green_ref.children().next().and_then(NodeOrToken::into_token).unwrap()
}
- match node.green() {
- Cow::Borrowed(green_ref) => TokenText::borrowed(first_token(green_ref).text()),
- Cow::Owned(green) => TokenText::owned(first_token(&green).to_owned()),
- }
+ first_token(node.green()).text()
}
fn into_comma(it: NodeOrToken<SyntaxNode, SyntaxToken>) -> Option<SyntaxToken> {
@@ -619,7 +596,7 @@ impl NameLike {
_ => None,
}
}
- pub fn text(&self) -> TokenText<'_> {
+ pub fn text(&self) -> &str {
match self {
NameLike::NameRef(name_ref) => name_ref.text(),
NameLike::Name(name) => name.text(),
@@ -691,7 +668,7 @@ impl ast::AstNode for NameOrNameRef {
}
impl NameOrNameRef {
- pub fn text(&self) -> TokenText<'_> {
+ pub fn text(&self) -> &str {
match self {
NameOrNameRef::Name(name) => name.text(),
NameOrNameRef::NameRef(name_ref) => name_ref.text(),
diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs
index 614678536a..204ebbd263 100644
--- a/crates/syntax/src/lib.rs
+++ b/crates/syntax/src/lib.rs
@@ -30,7 +30,6 @@ mod syntax_error;
mod syntax_node;
#[cfg(test)]
mod tests;
-mod token_text;
mod validation;
pub mod algo;
@@ -54,7 +53,6 @@ pub use crate::{
PreorderWithTokens, RustLanguage, SyntaxElement, SyntaxElementChildren, SyntaxNode,
SyntaxNodeChildren, SyntaxToken, SyntaxTreeBuilder,
},
- token_text::TokenText,
};
pub use parser::{Edition, SyntaxKind, T};
pub use rowan::{
diff --git a/crates/syntax/src/syntax_editor/edit_algo.rs b/crates/syntax/src/syntax_editor/edit_algo.rs
index d24d9b1334..24e7016f5b 100644
--- a/crates/syntax/src/syntax_editor/edit_algo.rs
+++ b/crates/syntax/src/syntax_editor/edit_algo.rs
@@ -449,7 +449,7 @@ impl TreeState {
let parent = parent_path.resolve(&self.root).and_then(SyntaxElement::into_node).unwrap();
let green = rowan::GreenNodeData::splice_children(
- parent.green().as_ref(),
+ parent.green(),
deleted.clone(),
inserted.into_iter().map(PreparedElement::into_green),
);
@@ -466,7 +466,7 @@ impl TreeState {
let NodeOrToken::Node(node) = replacement.syntax else {
panic!("root node replacement should be a node")
};
- self.root = SyntaxNode::new_root(node.green().into_owned());
+ self.root = SyntaxNode::new_root(node.green().to_owned());
self.changed.clear();
if track_as_changed {
self.changed.push(SyntaxPath { child_indices: Vec::new() });
@@ -543,7 +543,7 @@ struct PreparedElement {
impl PreparedElement {
fn into_green(self) -> rowan::NodeOrToken<rowan::GreenNode, rowan::GreenToken> {
match self.syntax {
- SyntaxElement::Node(node) => NodeOrToken::Node(node.green().into_owned()),
+ SyntaxElement::Node(node) => NodeOrToken::Node(node.green().to_owned()),
SyntaxElement::Token(token) => NodeOrToken::Token(token.green().to_owned()),
}
}
diff --git a/crates/syntax/src/token_text.rs b/crates/syntax/src/token_text.rs
deleted file mode 100644
index e69deb49ce..0000000000
--- a/crates/syntax/src/token_text.rs
+++ /dev/null
@@ -1,102 +0,0 @@
-//! Yet another version of owned string, backed by a syntax tree token.
-
-use std::{cmp::Ordering, fmt, ops};
-
-use rowan::GreenToken;
-use smol_str::SmolStr;
-
-pub struct TokenText<'a>(pub(crate) Repr<'a>);
-
-pub(crate) enum Repr<'a> {
- Borrowed(&'a str),
- Owned(GreenToken),
-}
-
-impl<'a> TokenText<'a> {
- pub fn borrowed(text: &'a str) -> Self {
- TokenText(Repr::Borrowed(text))
- }
-
- pub(crate) fn owned(green: GreenToken) -> Self {
- TokenText(Repr::Owned(green))
- }
-
- pub fn as_str(&self) -> &str {
- match &self.0 {
- &Repr::Borrowed(it) => it,
- Repr::Owned(green) => green.text(),
- }
- }
-}
-
-impl ops::Deref for TokenText<'_> {
- type Target = str;
-
- fn deref(&self) -> &str {
- self.as_str()
- }
-}
-impl AsRef<str> for TokenText<'_> {
- fn as_ref(&self) -> &str {
- self.as_str()
- }
-}
-
-impl From<TokenText<'_>> for String {
- fn from(token_text: TokenText<'_>) -> Self {
- token_text.as_str().into()
- }
-}
-
-impl From<TokenText<'_>> for SmolStr {
- fn from(token_text: TokenText<'_>) -> Self {
- SmolStr::new(token_text.as_str())
- }
-}
-
-impl PartialEq<&'_ str> for TokenText<'_> {
- fn eq(&self, other: &&str) -> bool {
- self.as_str() == *other
- }
-}
-impl PartialEq<TokenText<'_>> for &'_ str {
- fn eq(&self, other: &TokenText<'_>) -> bool {
- other == self
- }
-}
-impl PartialEq<String> for TokenText<'_> {
- fn eq(&self, other: &String) -> bool {
- self.as_str() == other.as_str()
- }
-}
-impl PartialEq<TokenText<'_>> for String {
- fn eq(&self, other: &TokenText<'_>) -> bool {
- other == self
- }
-}
-impl PartialEq for TokenText<'_> {
- fn eq(&self, other: &TokenText<'_>) -> bool {
- self.as_str() == other.as_str()
- }
-}
-impl Eq for TokenText<'_> {}
-impl Ord for TokenText<'_> {
- fn cmp(&self, other: &Self) -> Ordering {
- self.as_str().cmp(other.as_str())
- }
-}
-impl PartialOrd for TokenText<'_> {
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-impl fmt::Display for TokenText<'_> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Display::fmt(self.as_str(), f)
- }
-}
-impl fmt::Debug for TokenText<'_> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Debug::fmt(self.as_str(), f)
- }
-}