Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #13860 - danieleades:clippy, r=lnicola
fix a bunch of clippy lints fixes a bunch of clippy lints for fun and profit i'm aware of this repo's position on clippy. The changes are split into separate commits so they can be reviewed separately
bors 2023-01-09
parent 1bd1a09 · parent bb083b8 · commit f77b68a
-rw-r--r--crates/flycheck/src/lib.rs3
-rw-r--r--crates/hir-def/src/data.rs13
-rw-r--r--crates/hir-def/src/find_path.rs2
-rw-r--r--crates/hir-def/src/generics.rs4
-rw-r--r--crates/hir-def/src/import_map.rs4
-rw-r--r--crates/hir-def/src/item_scope.rs15
-rw-r--r--crates/hir-def/src/macro_expansion_tests.rs2
-rw-r--r--crates/hir-def/src/nameres/collector.rs8
-rw-r--r--crates/hir-def/src/nameres/path_resolution.rs2
-rw-r--r--crates/hir-def/src/resolver.rs7
-rw-r--r--crates/hir-expand/src/builtin_attr_macro.rs3
-rw-r--r--crates/hir-expand/src/builtin_fn_macro.rs2
-rw-r--r--crates/hir-expand/src/eager.rs2
-rw-r--r--crates/hir-expand/src/name.rs4
-rw-r--r--crates/hir-ty/src/autoderef.rs6
-rw-r--r--crates/hir-ty/src/consteval.rs10
-rw-r--r--crates/hir-ty/src/consteval/tests.rs1
-rw-r--r--crates/hir-ty/src/infer/expr.rs4
-rw-r--r--crates/hir-ty/src/infer/pat.rs4
-rw-r--r--crates/hir-ty/src/interner.rs65
-rw-r--r--crates/hir-ty/src/layout.rs2
-rw-r--r--crates/hir-ty/src/layout/tests.rs6
-rw-r--r--crates/hir-ty/src/lower.rs10
-rw-r--r--crates/hir-ty/src/method_resolution.rs8
-rw-r--r--crates/hir-ty/src/traits.rs7
-rw-r--r--crates/hir-ty/src/utils.rs10
-rw-r--r--crates/hir/src/lib.rs8
-rw-r--r--crates/hir/src/semantics.rs6
-rw-r--r--crates/hir/src/source_analyzer.rs20
-rw-r--r--crates/ide-assists/src/handlers/add_missing_match_arms.rs4
-rw-r--r--crates/ide-assists/src/handlers/add_return_type.rs6
-rw-r--r--crates/ide-assists/src/handlers/auto_import.rs2
-rw-r--r--crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs2
-rw-r--r--crates/ide-assists/src/handlers/extract_function.rs2
-rw-r--r--crates/ide-assists/src/handlers/extract_module.rs8
-rw-r--r--crates/ide-assists/src/handlers/extract_struct_from_enum_variant.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_default_from_new.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_deref.rs3
-rw-r--r--crates/ide-assists/src/handlers/generate_enum_variant.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_function.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_getter.rs4
-rw-r--r--crates/ide-assists/src/handlers/generate_new.rs2
-rw-r--r--crates/ide-assists/src/handlers/inline_type_alias.rs6
-rw-r--r--crates/ide-assists/src/handlers/remove_dbg.rs2
-rw-r--r--crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs2
-rw-r--r--crates/ide-assists/src/handlers/unnecessary_async.rs2
-rw-r--r--crates/ide-assists/src/tests/sourcegen.rs3
-rw-r--r--crates/ide-assists/src/utils.rs8
-rw-r--r--crates/ide-assists/src/utils/gen_trait_fn_body.rs2
-rw-r--r--crates/ide-completion/src/completions/attribute.rs6
-rw-r--r--crates/ide-completion/src/completions/dot.rs4
-rw-r--r--crates/ide-completion/src/completions/env_vars.rs14
-rw-r--r--crates/ide-completion/src/completions/expr.rs2
-rw-r--r--crates/ide-completion/src/completions/format_string.rs2
-rw-r--r--crates/ide-completion/src/completions/item_list/trait_impl.rs24
-rw-r--r--crates/ide-completion/src/completions/postfix.rs3
-rw-r--r--crates/ide-completion/src/completions/type.rs2
-rw-r--r--crates/ide-completion/src/context/analysis.rs12
-rw-r--r--crates/ide-completion/src/render/union_literal.rs2
-rw-r--r--crates/ide-completion/src/tests.rs2
-rw-r--r--crates/ide-db/src/imports/merge_imports.rs2
-rw-r--r--crates/ide-db/src/search.rs4
-rw-r--r--crates/ide-db/src/syntax_helpers/node_ext.rs2
-rw-r--r--crates/ide-diagnostics/src/handlers/missing_fields.rs4
-rw-r--r--crates/ide-diagnostics/src/handlers/no_such_field.rs2
-rw-r--r--crates/ide-diagnostics/src/lib.rs2
-rw-r--r--crates/ide-diagnostics/src/tests/sourcegen.rs2
-rw-r--r--crates/ide/src/doc_links.rs4
-rw-r--r--crates/ide/src/expand_macro.rs2
-rw-r--r--crates/ide/src/extend_selection.rs2
-rw-r--r--crates/ide/src/goto_implementation.rs2
-rw-r--r--crates/ide/src/highlight_related.rs4
-rw-r--r--crates/ide/src/hover.rs2
-rw-r--r--crates/ide/src/hover/render.rs2
-rw-r--r--crates/ide/src/inlay_hints.rs6
-rw-r--r--crates/ide/src/inlay_hints/bind_pat.rs2
-rw-r--r--crates/ide/src/inlay_hints/binding_mode.rs2
-rw-r--r--crates/ide/src/rename.rs7
-rw-r--r--crates/ide/src/syntax_highlighting/highlight.rs2
-rw-r--r--crates/mbe/src/lib.rs2
-rw-r--r--crates/mbe/src/parser.rs6
-rw-r--r--crates/mbe/src/syntax_bridge.rs2
-rw-r--r--crates/mbe/src/syntax_bridge/tests.rs2
-rw-r--r--crates/parser/src/grammar/paths.rs9
-rw-r--r--crates/parser/src/output.rs2
-rw-r--r--crates/proc-macro-api/src/msg/flat.rs2
-rw-r--r--crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs2
-rw-r--r--crates/proc-macro-srv/src/tests/utils.rs4
-rw-r--r--crates/profile/src/lib.rs4
-rw-r--r--crates/project-model/src/build_scripts.rs11
-rw-r--r--crates/project-model/src/cargo_workspace.rs4
-rw-r--r--crates/project-model/src/rustc_cfg.rs8
-rw-r--r--crates/project-model/src/sysroot.rs4
-rw-r--r--crates/project-model/src/target_data_layout.rs8
-rw-r--r--crates/project-model/src/workspace.rs2
-rw-r--r--crates/rust-analyzer/src/caps.rs4
-rw-r--r--crates/rust-analyzer/src/cli/scip.rs4
-rw-r--r--crates/rust-analyzer/src/config.rs13
-rw-r--r--crates/rust-analyzer/src/diagnostics.rs3
-rw-r--r--crates/rust-analyzer/src/diagnostics/to_proto.rs3
-rw-r--r--crates/rust-analyzer/src/from_proto.rs7
-rw-r--r--crates/rust-analyzer/src/handlers.rs4
-rw-r--r--crates/rust-analyzer/src/main_loop.rs7
-rw-r--r--crates/rust-analyzer/src/semantic_tokens.rs10
-rw-r--r--crates/rust-analyzer/src/to_proto.rs4
-rw-r--r--crates/rust-analyzer/tests/slow-tests/main.rs10
-rw-r--r--crates/rust-analyzer/tests/slow-tests/sourcegen.rs2
-rw-r--r--crates/rust-analyzer/tests/slow-tests/tidy.rs7
-rw-r--r--crates/sourcegen/src/lib.rs9
-rw-r--r--crates/stdx/src/hash.rs2
-rw-r--r--crates/syntax/src/algo.rs3
-rw-r--r--crates/syntax/src/ast/edit_in_place.rs2
-rw-r--r--crates/syntax/src/ast/generated/nodes.rs18
-rw-r--r--crates/syntax/src/tests.rs2
-rw-r--r--crates/syntax/src/tests/sourcegen_ast.rs2
-rw-r--r--crates/test-utils/src/assert_linear.rs2
-rw-r--r--crates/test-utils/src/fixture.rs16
-rw-r--r--crates/test-utils/src/lib.rs2
-rw-r--r--lib/lsp-server/src/lib.rs16
-rw-r--r--xtask/src/release/changelog.rs17
120 files changed, 298 insertions, 375 deletions
diff --git a/crates/flycheck/src/lib.rs b/crates/flycheck/src/lib.rs
index 8605379620..590a93fbaa 100644
--- a/crates/flycheck/src/lib.rs
+++ b/crates/flycheck/src/lib.rs
@@ -408,8 +408,7 @@ impl CargoHandle {
Ok(())
} else {
Err(io::Error::new(io::ErrorKind::Other, format!(
- "Cargo watcher failed, the command produced no valid metadata (exit code: {:?}):\n{}",
- exit_status, error
+ "Cargo watcher failed, the command produced no valid metadata (exit code: {exit_status:?}):\n{error}"
)))
}
}
diff --git a/crates/hir-def/src/data.rs b/crates/hir-def/src/data.rs
index b78ab71ef2..e6b05f27a5 100644
--- a/crates/hir-def/src/data.rs
+++ b/crates/hir-def/src/data.rs
@@ -234,8 +234,7 @@ impl TraitData {
let item_tree = tree_id.item_tree(db);
let tr_def = &item_tree[tree_id.value];
let _cx = stdx::panic_context::enter(format!(
- "trait_data_query({:?} -> {:?} -> {:?})",
- tr, tr_loc, tr_def
+ "trait_data_query({tr:?} -> {tr_loc:?} -> {tr_def:?})"
));
let name = tr_def.name.clone();
let is_auto = tr_def.is_auto;
@@ -543,7 +542,7 @@ impl<'a> AssocItemCollector<'a> {
if !attrs.is_cfg_enabled(self.expander.cfg_options()) {
self.inactive_diagnostics.push(DefDiagnostic::unconfigured_code(
self.module_id.local_id,
- InFile::new(self.expander.current_file_id(), item.ast_id(&item_tree).upcast()),
+ InFile::new(self.expander.current_file_id(), item.ast_id(item_tree).upcast()),
attrs.cfg().unwrap(),
self.expander.cfg_options().clone(),
));
@@ -552,7 +551,7 @@ impl<'a> AssocItemCollector<'a> {
'attrs: for attr in &*attrs {
let ast_id =
- AstId::new(self.expander.current_file_id(), item.ast_id(&item_tree).upcast());
+ AstId::new(self.expander.current_file_id(), item.ast_id(item_tree).upcast());
let ast_id_with_path = AstIdWithPath { path: (*attr.path).clone(), ast_id };
if let Ok(ResolvedAttr::Macro(call_id)) = self.def_map.resolve_attr_macro(
@@ -619,10 +618,8 @@ impl<'a> AssocItemCollector<'a> {
let ast_id_map = self.db.ast_id_map(self.expander.current_file_id());
let call = ast_id_map.get(call.ast_id).to_node(&root);
- let _cx = stdx::panic_context::enter(format!(
- "collect_items MacroCall: {}",
- call
- ));
+ let _cx =
+ stdx::panic_context::enter(format!("collect_items MacroCall: {call}"));
let res = self.expander.enter_expand::<ast::MacroItems>(self.db, call);
if let Ok(ExpandResult { value: Some((mark, _)), .. }) = res {
diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs
index f7dc3a7365..ddd7ad99e9 100644
--- a/crates/hir-def/src/find_path.rs
+++ b/crates/hir-def/src/find_path.rs
@@ -176,7 +176,7 @@ fn find_path_for_module(
// - if relative paths are fine, check if we are searching for a parent
if prefixed.filter(PrefixKind::is_absolute).is_none() {
- if let modpath @ Some(_) = find_self_super(&def_map, module_id, from) {
+ if let modpath @ Some(_) = find_self_super(def_map, module_id, from) {
return modpath;
}
}
diff --git a/crates/hir-def/src/generics.rs b/crates/hir-def/src/generics.rs
index 469b28c2d9..f74559f5d6 100644
--- a/crates/hir-def/src/generics.rs
+++ b/crates/hir-def/src/generics.rs
@@ -142,8 +142,8 @@ pub enum WherePredicateTypeTarget {
impl GenericParams {
/// Iterator of type_or_consts field
- pub fn iter<'a>(
- &'a self,
+ pub fn iter(
+ &self,
) -> impl DoubleEndedIterator<Item = (Idx<TypeOrConstParamData>, &TypeOrConstParamData)> {
self.type_or_consts.iter()
}
diff --git a/crates/hir-def/src/import_map.rs b/crates/hir-def/src/import_map.rs
index 193c766200..63e92df0e7 100644
--- a/crates/hir-def/src/import_map.rs
+++ b/crates/hir-def/src/import_map.rs
@@ -393,8 +393,8 @@ impl Query {
/// Searches dependencies of `krate` for an importable path matching `query`.
///
/// This returns a list of items that could be imported from dependencies of `krate`.
-pub fn search_dependencies<'a>(
- db: &'a dyn DefDatabase,
+pub fn search_dependencies(
+ db: &dyn DefDatabase,
krate: CrateId,
query: Query,
) -> FxHashSet<ItemInNs> {
diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs
index 7721221c44..c7b213b7e9 100644
--- a/crates/hir-def/src/item_scope.rs
+++ b/crates/hir-def/src/item_scope.rs
@@ -96,7 +96,7 @@ pub(crate) enum BuiltinShadowMode {
/// Legacy macros can only be accessed through special methods like `get_legacy_macros`.
/// Other methods will only resolve values, types and module scoped macros only.
impl ItemScope {
- pub fn entries<'a>(&'a self) -> impl Iterator<Item = (&'a Name, PerNs)> + 'a {
+ pub fn entries(&self) -> impl Iterator<Item = (&Name, PerNs)> + '_ {
// FIXME: shadowing
self.types
.keys()
@@ -159,18 +159,17 @@ impl ItemScope {
pub(crate) fn name_of(&self, item: ItemInNs) -> Option<(&Name, Visibility)> {
let (def, mut iter) = match item {
ItemInNs::Macros(def) => {
- return self
- .macros
- .iter()
- .find_map(|(name, &(other_def, vis))| (other_def == def).then(|| (name, vis)));
+ return self.macros.iter().find_map(|(name, &(other_def, vis))| {
+ (other_def == def).then_some((name, vis))
+ });
}
ItemInNs::Types(def) => (def, self.types.iter()),
ItemInNs::Values(def) => (def, self.values.iter()),
};
- iter.find_map(|(name, &(other_def, vis))| (other_def == def).then(|| (name, vis)))
+ iter.find_map(|(name, &(other_def, vis))| (other_def == def).then_some((name, vis)))
}
- pub(crate) fn traits<'a>(&'a self) -> impl Iterator<Item = TraitId> + 'a {
+ pub(crate) fn traits(&self) -> impl Iterator<Item = TraitId> + '_ {
self.types
.values()
.filter_map(|&(def, _)| match def {
@@ -327,7 +326,7 @@ impl ItemScope {
changed
}
- pub(crate) fn resolutions<'a>(&'a self) -> impl Iterator<Item = (Option<Name>, PerNs)> + 'a {
+ pub(crate) fn resolutions(&self) -> impl Iterator<Item = (Option<Name>, PerNs)> + '_ {
self.entries().map(|(name, res)| (Some(name.clone()), res)).chain(
self.unnamed_trait_imports
.iter()
diff --git a/crates/hir-def/src/macro_expansion_tests.rs b/crates/hir-def/src/macro_expansion_tests.rs
index 907cc98f7b..79c85d1183 100644
--- a/crates/hir-def/src/macro_expansion_tests.rs
+++ b/crates/hir-def/src/macro_expansion_tests.rs
@@ -170,7 +170,7 @@ pub fn identity_when_valid(_attr: TokenStream, item: TokenStream) -> TokenStream
}
let pp = pretty_print_macro_expansion(
parse.syntax_node(),
- show_token_ids.then(|| &*token_map),
+ show_token_ids.then_some(&*token_map),
);
let indent = IndentLevel::from_node(call.syntax());
let pp = reindent(indent, pp);
diff --git a/crates/hir-def/src/nameres/collector.rs b/crates/hir-def/src/nameres/collector.rs
index 6e1f85bc08..160203b778 100644
--- a/crates/hir-def/src/nameres/collector.rs
+++ b/crates/hir-def/src/nameres/collector.rs
@@ -67,7 +67,7 @@ pub(super) fn collect_defs(db: &dyn DefDatabase, mut def_map: DefMap, tree_id: T
let dep_def_map = db.crate_def_map(dep.crate_id);
let dep_root = dep_def_map.module_id(dep_def_map.root);
- deps.insert(dep.as_name(), dep_root.into());
+ deps.insert(dep.as_name(), dep_root);
if dep.is_prelude() && !tree_id.is_block() {
def_map.extern_prelude.insert(dep.as_name(), dep_root);
@@ -1094,7 +1094,7 @@ impl DefCollector<'_> {
ast_id,
*expand_to,
self.def_map.krate,
- &resolver_def_id,
+ resolver_def_id,
&mut |_err| (),
);
if let Ok(Ok(call_id)) = call_id {
@@ -1110,7 +1110,7 @@ impl DefCollector<'_> {
*derive_attr,
*derive_pos as u32,
self.def_map.krate,
- &resolver,
+ resolver,
);
if let Ok((macro_id, def_id, call_id)) = id {
@@ -2085,7 +2085,7 @@ impl ModCollector<'_, '_> {
.scope
.get_legacy_macro(name)
.and_then(|it| it.last())
- .map(|&it| macro_id_to_def_id(self.def_collector.db, it.into()))
+ .map(|&it| macro_id_to_def_id(self.def_collector.db, it))
},
)
})
diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs
index c7c50fa94a..1d9d5cccde 100644
--- a/crates/hir-def/src/nameres/path_resolution.rs
+++ b/crates/hir-def/src/nameres/path_resolution.rs
@@ -390,7 +390,7 @@ impl DefMap {
.get_legacy_macro(name)
// FIXME: shadowing
.and_then(|it| it.last())
- .map_or_else(PerNs::none, |&m| PerNs::macros(m.into(), Visibility::Public));
+ .map_or_else(PerNs::none, |&m| PerNs::macros(m, Visibility::Public));
let from_scope = self[module].scope.get(name);
let from_builtin = match self.block {
Some(_) => {
diff --git a/crates/hir-def/src/resolver.rs b/crates/hir-def/src/resolver.rs
index 070f683713..1ef7f9577f 100644
--- a/crates/hir-def/src/resolver.rs
+++ b/crates/hir-def/src/resolver.rs
@@ -381,7 +381,7 @@ impl Resolver {
});
def_map[module_id].scope.legacy_macros().for_each(|(name, macs)| {
macs.iter().for_each(|&mac| {
- res.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(MacroId::from(mac))));
+ res.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(mac)));
})
});
def_map.extern_prelude().for_each(|(name, &def)| {
@@ -517,10 +517,7 @@ impl Scope {
});
m.def_map[m.module_id].scope.legacy_macros().for_each(|(name, macs)| {
macs.iter().for_each(|&mac| {
- acc.add(
- name,
- ScopeDef::ModuleDef(ModuleDefId::MacroId(MacroId::from(mac))),
- );
+ acc.add(name, ScopeDef::ModuleDef(ModuleDefId::MacroId(mac)));
})
});
}
diff --git a/crates/hir-expand/src/builtin_attr_macro.rs b/crates/hir-expand/src/builtin_attr_macro.rs
index 0c886ac4da..58d192f9fe 100644
--- a/crates/hir-expand/src/builtin_attr_macro.rs
+++ b/crates/hir-expand/src/builtin_attr_macro.rs
@@ -115,7 +115,8 @@ pub fn pseudo_derive_attr_expansion(
};
let mut token_trees = Vec::new();
- for tt in (&args.token_trees)
+ for tt in args
+ .token_trees
.split(|tt| matches!(tt, tt::TokenTree::Leaf(tt::Leaf::Punct(tt::Punct { char: ',', .. }))))
{
token_trees.push(mk_leaf('#'));
diff --git a/crates/hir-expand/src/builtin_fn_macro.rs b/crates/hir-expand/src/builtin_fn_macro.rs
index eed71d88e2..5522bdf3b3 100644
--- a/crates/hir-expand/src/builtin_fn_macro.rs
+++ b/crates/hir-expand/src/builtin_fn_macro.rs
@@ -449,7 +449,7 @@ fn concat_bytes_expand(
match token.kind() {
syntax::SyntaxKind::BYTE => bytes.push(token.text().to_string()),
syntax::SyntaxKind::BYTE_STRING => {
- let components = unquote_byte_string(lit).unwrap_or_else(Vec::new);
+ let components = unquote_byte_string(lit).unwrap_or_default();
components.into_iter().for_each(|x| bytes.push(x.to_string()));
}
_ => {
diff --git a/crates/hir-expand/src/eager.rs b/crates/hir-expand/src/eager.rs
index 2f55e78b76..a1474c44e6 100644
--- a/crates/hir-expand/src/eager.rs
+++ b/crates/hir-expand/src/eager.rs
@@ -208,7 +208,7 @@ fn eager_macro_recur(
// Collect replacement
for child in children {
let def = match child.path().and_then(|path| ModPath::from_src(db, path, hygiene)) {
- Some(path) => macro_resolver(path.clone()).ok_or_else(|| UnresolvedMacro { path })?,
+ Some(path) => macro_resolver(path.clone()).ok_or(UnresolvedMacro { path })?,
None => {
diagnostic_sink(ExpandError::Other("malformed macro invocation".into()));
continue;
diff --git a/crates/hir-expand/src/name.rs b/crates/hir-expand/src/name.rs
index 4996542543..e8b3e312aa 100644
--- a/crates/hir-expand/src/name.rs
+++ b/crates/hir-expand/src/name.rs
@@ -62,7 +62,7 @@ impl<'a> UnescapedName<'a> {
it.clone()
}
}
- Repr::TupleField(it) => SmolStr::new(&it.to_string()),
+ Repr::TupleField(it) => SmolStr::new(it.to_string()),
}
}
}
@@ -139,7 +139,7 @@ impl Name {
pub fn to_smol_str(&self) -> SmolStr {
match &self.0 {
Repr::Text(it) => it.clone(),
- Repr::TupleField(it) => SmolStr::new(&it.to_string()),
+ Repr::TupleField(it) => SmolStr::new(it.to_string()),
}
}
diff --git a/crates/hir-ty/src/autoderef.rs b/crates/hir-ty/src/autoderef.rs
index 78911d8dc0..cbcf8f74c5 100644
--- a/crates/hir-ty/src/autoderef.rs
+++ b/crates/hir-ty/src/autoderef.rs
@@ -82,11 +82,11 @@ pub(crate) fn autoderef_step(
}
// FIXME: replace uses of this with Autoderef above
-pub fn autoderef<'a>(
- db: &'a dyn HirDatabase,
+pub fn autoderef(
+ db: &dyn HirDatabase,
env: Arc<TraitEnvironment>,
ty: Canonical<Ty>,
-) -> impl Iterator<Item = Canonical<Ty>> + 'a {
+) -> impl Iterator<Item = Canonical<Ty>> + '_ {
let mut table = InferenceTable::new(db, env);
let ty = table.instantiate_canonical(ty);
let mut autoderef = Autoderef::new(&mut table, ty);
diff --git a/crates/hir-ty/src/consteval.rs b/crates/hir-ty/src/consteval.rs
index 345cf63c4f..8df70330fa 100644
--- a/crates/hir-ty/src/consteval.rs
+++ b/crates/hir-ty/src/consteval.rs
@@ -131,7 +131,7 @@ fn scalar_max(scalar: &Scalar) -> i128 {
IntTy::I16 => i16::MAX as i128,
IntTy::I32 => i32::MAX as i128,
IntTy::I64 => i64::MAX as i128,
- IntTy::I128 => i128::MAX as i128,
+ IntTy::I128 => i128::MAX,
},
Scalar::Uint(x) => match x {
chalk_ir::UintTy::Usize => usize::MAX as i128,
@@ -139,7 +139,7 @@ fn scalar_max(scalar: &Scalar) -> i128 {
chalk_ir::UintTy::U16 => u16::MAX as i128,
chalk_ir::UintTy::U32 => u32::MAX as i128,
chalk_ir::UintTy::U64 => u64::MAX as i128,
- chalk_ir::UintTy::U128 => i128::MAX as i128, // ignore too big u128 for now
+ chalk_ir::UintTy::U128 => i128::MAX, // ignore too big u128 for now
},
Scalar::Float(_) => 0,
}
@@ -404,7 +404,7 @@ pub(crate) fn path_to_const(
args_lazy: impl FnOnce() -> Generics,
debruijn: DebruijnIndex,
) -> Option<Const> {
- match resolver.resolve_path_in_value_ns_fully(db.upcast(), &path) {
+ match resolver.resolve_path_in_value_ns_fully(db.upcast(), path) {
Some(ValueNs::GenericParam(p)) => {
let ty = db.const_param_ty(p);
let args = args_lazy();
@@ -511,10 +511,10 @@ pub(crate) fn const_eval_query_variant(
)
}
-pub(crate) fn eval_to_const<'a>(
+pub(crate) fn eval_to_const(
expr: Idx<Expr>,
mode: ParamLoweringMode,
- ctx: &mut InferenceContext<'a>,
+ ctx: &mut InferenceContext<'_>,
args: impl FnOnce() -> Generics,
debruijn: DebruijnIndex,
) -> Const {
diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs
index 6ba03737cf..3c930c077b 100644
--- a/crates/hir-ty/src/consteval/tests.rs
+++ b/crates/hir-ty/src/consteval/tests.rs
@@ -25,7 +25,6 @@ fn eval_goal(ra_fixture: &str) -> Result<ComputedExpr, ConstEvalError> {
let scope = &def_map[module_id.local_id].scope;
let const_id = scope
.declarations()
- .into_iter()
.find_map(|x| match x {
hir_def::ModuleDefId::ConstId(x) => {
if db.const_data(x).name.as_ref()?.to_string() == "GOAL" {
diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs
index a015f67024..8f9cdac378 100644
--- a/crates/hir-ty/src/infer/expr.rs
+++ b/crates/hir-ty/src/infer/expr.rs
@@ -961,7 +961,7 @@ impl<'a> InferenceContext<'a> {
Expr::RecordLit { path, fields, .. } => {
let subs = fields.iter().map(|f| (f.name.clone(), f.expr));
- self.infer_record_pat_like(path.as_deref(), &rhs_ty, (), lhs.into(), subs)
+ self.infer_record_pat_like(path.as_deref(), &rhs_ty, (), lhs, subs)
}
Expr::Underscore => rhs_ty.clone(),
_ => {
@@ -1360,7 +1360,7 @@ impl<'a> InferenceContext<'a> {
ty,
c,
ParamLoweringMode::Placeholder,
- || generics(this.db.upcast(), (&this.resolver).generic_def().unwrap()),
+ || generics(this.db.upcast(), this.resolver.generic_def().unwrap()),
DebruijnIndex::INNERMOST,
)
},
diff --git a/crates/hir-ty/src/infer/pat.rs b/crates/hir-ty/src/infer/pat.rs
index 53259d66de..f154dac8e8 100644
--- a/crates/hir-ty/src/infer/pat.rs
+++ b/crates/hir-ty/src/infer/pat.rs
@@ -153,7 +153,7 @@ impl<'a> InferenceContext<'a> {
) -> Ty {
let mut expected = self.resolve_ty_shallow(expected);
- if is_non_ref_pat(&self.body, pat) {
+ if is_non_ref_pat(self.body, pat) {
let mut pat_adjustments = Vec::new();
while let Some((inner, _lifetime, mutability)) = expected.as_reference() {
pat_adjustments.push(expected.clone());
@@ -220,7 +220,7 @@ impl<'a> InferenceContext<'a> {
),
Pat::Record { path: p, args: fields, ellipsis: _ } => {
let subs = fields.iter().map(|f| (f.name.clone(), f.pat));
- self.infer_record_pat_like(p.as_deref(), &expected, default_bm, pat.into(), subs)
+ self.infer_record_pat_like(p.as_deref(), &expected, default_bm, pat, subs)
}
Pat::Path(path) => {
// FIXME use correct resolver for the surrounding expression
diff --git a/crates/hir-ty/src/interner.rs b/crates/hir-ty/src/interner.rs
index 01b5719be4..441503a300 100644
--- a/crates/hir-ty/src/interner.rs
+++ b/crates/hir-ty/src/interner.rs
@@ -228,7 +228,7 @@ impl chalk_ir::interner::Interner for Interner {
Interned::new(InternedWrapper(chalk_ir::TyData { kind, flags }))
}
- fn ty_data<'a>(self, ty: &'a Self::InternedType) -> &'a chalk_ir::TyData<Self> {
+ fn ty_data(self, ty: &Self::InternedType) -> &chalk_ir::TyData<Self> {
&ty.0
}
@@ -236,10 +236,7 @@ impl chalk_ir::interner::Interner for Interner {
Interned::new(InternedWrapper(lifetime))
}
- fn lifetime_data<'a>(
- self,
- lifetime: &'a Self::InternedLifetime,
- ) -> &'a chalk_ir::LifetimeData<Self> {
+ fn lifetime_data(self, lifetime: &Self::InternedLifetime) -> &chalk_ir::LifetimeData<Self> {
&lifetime.0
}
@@ -247,7 +244,7 @@ impl chalk_ir::interner::Interner for Interner {
Interned::new(InternedWrapper(constant))
}
- fn const_data<'a>(self, constant: &'a Self::InternedConst) -> &'a chalk_ir::ConstData<Self> {
+ fn const_data(self, constant: &Self::InternedConst) -> &chalk_ir::ConstData<Self> {
&constant.0
}
@@ -267,10 +264,10 @@ impl chalk_ir::interner::Interner for Interner {
parameter
}
- fn generic_arg_data<'a>(
+ fn generic_arg_data(
self,
- parameter: &'a Self::InternedGenericArg,
- ) -> &'a chalk_ir::GenericArgData<Self> {
+ parameter: &Self::InternedGenericArg,
+ ) -> &chalk_ir::GenericArgData<Self> {
parameter
}
@@ -285,11 +282,11 @@ impl chalk_ir::interner::Interner for Interner {
data.into_iter().collect()
}
- fn goal_data<'a>(self, goal: &'a Self::InternedGoal) -> &'a GoalData<Self> {
+ fn goal_data(self, goal: &Self::InternedGoal) -> &GoalData<Self> {
goal
}
- fn goals_data<'a>(self, goals: &'a Self::InternedGoals) -> &'a [Goal<Interner>] {
+ fn goals_data(self, goals: &Self::InternedGoals) -> &[Goal<Interner>] {
goals
}
@@ -300,10 +297,7 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn substitution_data<'a>(
- self,
- substitution: &'a Self::InternedSubstitution,
- ) -> &'a [GenericArg] {
+ fn substitution_data(self, substitution: &Self::InternedSubstitution) -> &[GenericArg] {
&substitution.as_ref().0
}
@@ -314,10 +308,10 @@ impl chalk_ir::interner::Interner for Interner {
data
}
- fn program_clause_data<'a>(
+ fn program_clause_data(
self,
- clause: &'a Self::InternedProgramClause,
- ) -> &'a chalk_ir::ProgramClauseData<Self> {
+ clause: &Self::InternedProgramClause,
+ ) -> &chalk_ir::ProgramClauseData<Self> {
clause
}
@@ -328,10 +322,10 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn program_clauses_data<'a>(
+ fn program_clauses_data(
self,
- clauses: &'a Self::InternedProgramClauses,
- ) -> &'a [chalk_ir::ProgramClause<Self>] {
+ clauses: &Self::InternedProgramClauses,
+ ) -> &[chalk_ir::ProgramClause<Self>] {
clauses
}
@@ -342,10 +336,10 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn quantified_where_clauses_data<'a>(
+ fn quantified_where_clauses_data(
self,
- clauses: &'a Self::InternedQuantifiedWhereClauses,
- ) -> &'a [chalk_ir::QuantifiedWhereClause<Self>] {
+ clauses: &Self::InternedQuantifiedWhereClauses,
+ ) -> &[chalk_ir::QuantifiedWhereClause<Self>] {
clauses
}
@@ -356,10 +350,10 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn variable_kinds_data<'a>(
+ fn variable_kinds_data(
self,
- parameter_kinds: &'a Self::InternedVariableKinds,
- ) -> &'a [chalk_ir::VariableKind<Self>] {
+ parameter_kinds: &Self::InternedVariableKinds,
+ ) -> &[chalk_ir::VariableKind<Self>] {
&parameter_kinds.as_ref().0
}
@@ -370,10 +364,10 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn canonical_var_kinds_data<'a>(
+ fn canonical_var_kinds_data(
self,
- canonical_var_kinds: &'a Self::InternedCanonicalVarKinds,
- ) -> &'a [chalk_ir::CanonicalVarKind<Self>] {
+ canonical_var_kinds: &Self::InternedCanonicalVarKinds,
+ ) -> &[chalk_ir::CanonicalVarKind<Self>] {
canonical_var_kinds
}
@@ -384,10 +378,10 @@ impl chalk_ir::interner::Interner for Interner {
data.into_iter().collect()
}
- fn constraints_data<'a>(
+ fn constraints_data(
self,
- constraints: &'a Self::InternedConstraints,
- ) -> &'a [chalk_ir::InEnvironment<chalk_ir::Constraint<Self>>] {
+ constraints: &Self::InternedConstraints,
+ ) -> &[chalk_ir::InEnvironment<chalk_ir::Constraint<Self>>] {
constraints
}
fn debug_closure_id(
@@ -410,10 +404,7 @@ impl chalk_ir::interner::Interner for Interner {
Ok(Interned::new(InternedWrapper(data.into_iter().collect::<Result<_, _>>()?)))
}
- fn variances_data<'a>(
- self,
- variances: &'a Self::InternedVariances,
- ) -> &'a [chalk_ir::Variance] {
+ fn variances_data(self, variances: &Self::InternedVariances) -> &[chalk_ir::Variance] {
variances
}
}
diff --git a/crates/hir-ty/src/layout.rs b/crates/hir-ty/src/layout.rs
index 209072176c..7a1cca3143 100644
--- a/crates/hir-ty/src/layout.rs
+++ b/crates/hir-ty/src/layout.rs
@@ -241,7 +241,7 @@ pub fn layout_of_ty(db: &dyn HirDatabase, ty: &Ty, krate: CrateId) -> Result<Lay
fn layout_of_unit(cx: &LayoutCx<'_>, dl: &TargetDataLayout) -> Result<Layout, LayoutError> {
cx.univariant::<RustcEnumVariantIdx, &&Layout>(
- &dl,
+ dl,
&[],
&ReprOptions::default(),
StructKind::AlwaysSized,
diff --git a/crates/hir-ty/src/layout/tests.rs b/crates/hir-ty/src/layout/tests.rs
index ba821235f3..53838cf41d 100644
--- a/crates/hir-ty/src/layout/tests.rs
+++ b/crates/hir-ty/src/layout/tests.rs
@@ -12,8 +12,7 @@ use super::layout_of_ty;
fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
// using unstable cargo features failed, fall back to using plain rustc
let mut cmd = std::process::Command::new("rustc");
- cmd.args(&["-Z", "unstable-options", "--print", "target-spec-json"])
- .env("RUSTC_BOOTSTRAP", "1");
+ cmd.args(["-Z", "unstable-options", "--print", "target-spec-json"]).env("RUSTC_BOOTSTRAP", "1");
let output = cmd.output().unwrap();
assert!(output.status.success(), "{}", output.status);
let stdout = String::from_utf8(output.stdout).unwrap();
@@ -30,7 +29,6 @@ fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
let scope = &def_map[module_id.local_id].scope;
let adt_id = scope
.declarations()
- .into_iter()
.find_map(|x| match x {
hir_def::ModuleDefId::AdtId(x) => {
let name = match x {
@@ -38,7 +36,7 @@ fn eval_goal(ra_fixture: &str, minicore: &str) -> Result<Layout, LayoutError> {
hir_def::AdtId::UnionId(x) => db.union_data(x).name.to_smol_str(),
hir_def::AdtId::EnumId(x) => db.enum_data(x).name.to_smol_str(),
};
- (name == "Goal").then(|| x)
+ (name == "Goal").then_some(x)
}
_ => None,
})
diff --git a/crates/hir-ty/src/lower.rs b/crates/hir-ty/src/lower.rs
index 752a3caceb..592410008a 100644
--- a/crates/hir-ty/src/lower.rs
+++ b/crates/hir-ty/src/lower.rs
@@ -780,7 +780,7 @@ impl<'a> TyLoweringContext<'a> {
|_, c, ty| {
const_or_path_to_chalk(
self.db,
- &self.resolver,
+ self.resolver,
ty,
c,
self.type_param_mode,
@@ -1796,8 +1796,7 @@ pub(crate) fn impl_self_ty_query(db: &dyn HirDatabase, impl_id: ImplId) -> Binde
let impl_data = db.impl_data(impl_id);
let resolver = impl_id.resolver(db.upcast());
let _cx = stdx::panic_context::enter(format!(
- "impl_self_ty_query({:?} -> {:?} -> {:?})",
- impl_id, impl_loc, impl_data
+ "impl_self_ty_query({impl_id:?} -> {impl_loc:?} -> {impl_data:?})"
));
let generics = generics(db.upcast(), impl_id.into());
let ctx =
@@ -1834,8 +1833,7 @@ pub(crate) fn impl_trait_query(db: &dyn HirDatabase, impl_id: ImplId) -> Option<
let impl_data = db.impl_data(impl_id);
let resolver = impl_id.resolver(db.upcast());
let _cx = stdx::panic_context::enter(format!(
- "impl_trait_query({:?} -> {:?} -> {:?})",
- impl_id, impl_loc, impl_data
+ "impl_trait_query({impl_id:?} -> {impl_loc:?} -> {impl_data:?})"
));
let ctx =
TyLoweringContext::new(db, &resolver).with_type_param_mode(ParamLoweringMode::Variable);
@@ -1854,7 +1852,7 @@ pub(crate) fn return_type_impl_traits(
let ctx_ret = TyLoweringContext::new(db, &resolver)
.with_impl_trait_mode(ImplTraitLoweringMode::Opaque)
.with_type_param_mode(ParamLoweringMode::Variable);
- let _ret = (&ctx_ret).lower_ty(&data.ret_type);
+ let _ret = ctx_ret.lower_ty(&data.ret_type);
let generics = generics(db.upcast(), def.into());
let return_type_impl_traits =
ReturnTypeImplTraits { impl_traits: ctx_ret.opaque_type_data.into_inner() };
diff --git a/crates/hir-ty/src/method_resolution.rs b/crates/hir-ty/src/method_resolution.rs
index 2f5fa3083c..2328dceb83 100644
--- a/crates/hir-ty/src/method_resolution.rs
+++ b/crates/hir-ty/src/method_resolution.rs
@@ -714,7 +714,7 @@ fn lookup_impl_assoc_item_for_trait_ref(
let impl_data = find_matching_impl(impls, table, trait_ref)?;
impl_data.items.iter().find_map(|it| match it {
AssocItemId::FunctionId(f) => {
- (db.function_data(*f).name == *name).then(|| AssocItemId::FunctionId(*f))
+ (db.function_data(*f).name == *name).then_some(AssocItemId::FunctionId(*f))
}
AssocItemId::ConstId(c) => db
.const_data(*c)
@@ -926,7 +926,7 @@ fn iterate_method_candidates_by_receiver(
while let Some((self_ty, _)) = autoderef.next() {
iterate_inherent_methods(
&self_ty,
- &mut autoderef.table,
+ autoderef.table,
name,
Some(&receiver_ty),
Some(receiver_adjustments.clone()),
@@ -941,7 +941,7 @@ fn iterate_method_candidates_by_receiver(
while let Some((self_ty, _)) = autoderef.next() {
iterate_trait_method_candidates(
&self_ty,
- &mut autoderef.table,
+ autoderef.table,
traits_in_scope,
name,
Some(&receiver_ty),
@@ -1246,7 +1246,7 @@ fn is_valid_candidate(
let expected_self_ty = TyBuilder::impl_self_ty(db, impl_id)
.fill_with_inference_vars(table)
.build();
- table.unify(&expected_self_ty, &self_ty)
+ table.unify(&expected_self_ty, self_ty)
});
if !self_ty_matches {
cov_mark::hit!(const_candidate_self_type_mismatch);
diff --git a/crates/hir-ty/src/traits.rs b/crates/hir-ty/src/traits.rs
index 615fd9d94d..778a6b8204 100644
--- a/crates/hir-ty/src/traits.rs
+++ b/crates/hir-ty/src/traits.rs
@@ -55,13 +55,10 @@ impl TraitEnvironment {
}
}
- pub fn traits_in_scope_from_clauses<'a>(
- &'a self,
- ty: Ty,
- ) -> impl Iterator<Item = TraitId> + 'a {
+ pub fn traits_in_scope_from_clauses(&self, ty: Ty) -> impl Iterator<Item = TraitId> + '_ {
self.traits_from_clauses
.iter()
- .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then(|| *trait_id))
+ .filter_map(move |(self_ty, trait_id)| (*self_ty == ty).then_some(*trait_id))
}
}
diff --git a/crates/hir-ty/src/utils.rs b/crates/hir-ty/src/utils.rs
index 1f3470a362..9893566bd5 100644
--- a/crates/hir-ty/src/utils.rs
+++ b/crates/hir-ty/src/utils.rs
@@ -184,9 +184,7 @@ pub(crate) struct Generics {
}
impl Generics {
- pub(crate) fn iter_id<'a>(
- &'a self,
- ) -> impl Iterator<Item = Either<TypeParamId, ConstParamId>> + 'a {
+ pub(crate) fn iter_id(&self) -> impl Iterator<Item = Either<TypeParamId, ConstParamId>> + '_ {
self.iter().map(|(id, data)| match data {
TypeOrConstParamData::TypeParamData(_) => Either::Left(TypeParamId::from_unchecked(id)),
TypeOrConstParamData::ConstParamData(_) => {
@@ -216,9 +214,9 @@ impl Generics {
}
/// Iterator over types and const params of parent.
- pub(crate) fn iter_parent<'a>(
- &'a self,
- ) -> impl DoubleEndedIterator<Item = (TypeOrConstParamId, &'a TypeOrConstParamData)> + 'a {
+ pub(crate) fn iter_parent(
+ &self,
+ ) -> impl DoubleEndedIterator<Item = (TypeOrConstParamId, &TypeOrConstParamData)> {
self.parent_generics().into_iter().flat_map(|it| {
let to_toc_id =
move |(local_id, p)| (TypeOrConstParamId { parent: it.def, local_id }, p);
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 86fd45e824..2b24b5c31b 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -608,7 +608,7 @@ impl Module {
pub fn legacy_macros(self, db: &dyn HirDatabase) -> Vec<Macro> {
let def_map = self.id.def_map(db.upcast());
let scope = &def_map[self.id.local_id].scope;
- scope.legacy_macros().flat_map(|(_, it)| it).map(|&it| MacroId::from(it).into()).collect()
+ scope.legacy_macros().flat_map(|(_, it)| it).map(|&it| it.into()).collect()
}
pub fn impl_defs(self, db: &dyn HirDatabase) -> Vec<Impl> {
@@ -1559,7 +1559,7 @@ impl Function {
}
pub fn self_param(self, db: &dyn HirDatabase) -> Option<SelfParam> {
- self.has_self_param(db).then(|| SelfParam { func: self.id })
+ self.has_self_param(db).then_some(SelfParam { func: self.id })
}
pub fn assoc_fn_params(self, db: &dyn HirDatabase) -> Vec<Param> {
@@ -2411,7 +2411,7 @@ pub struct DeriveHelper {
impl DeriveHelper {
pub fn derive(&self) -> Macro {
- Macro { id: self.derive.into() }
+ Macro { id: self.derive }
}
pub fn name(&self, db: &dyn HirDatabase) -> Name {
@@ -2781,7 +2781,7 @@ impl Impl {
pub fn all_for_trait(db: &dyn HirDatabase, trait_: Trait) -> Vec<Impl> {
let krate = trait_.module(db).krate();
let mut all = Vec::new();
- for Crate { id } in krate.transitive_reverse_dependencies(db).into_iter() {
+ for Crate { id } in krate.transitive_reverse_dependencies(db) {
let impls = db.trait_impls_in_crate(id);
all.extend(impls.for_trait(trait_.id).map(Self::from))
}
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs
index a255dc1972..e0d2610391 100644
--- a/crates/hir/src/semantics.rs
+++ b/crates/hir/src/semantics.rs
@@ -795,7 +795,7 @@ impl<'db> SemanticsImpl<'db> {
// requeue the tokens we got from mapping our current token down
stack.extend(mapped_tokens);
// if the length changed we have found a mapping for the token
- (stack.len() != len).then(|| ())
+ (stack.len() != len).then_some(())
};
// Remap the next token in the queue into a macro call its in, if it is not being remapped
@@ -1221,7 +1221,7 @@ impl<'db> SemanticsImpl<'db> {
krate
.dependencies(self.db)
.into_iter()
- .find_map(|dep| (dep.name == name).then(|| dep.krate))
+ .find_map(|dep| (dep.name == name).then_some(dep.krate))
}
fn resolve_variant(&self, record_lit: ast::RecordExpr) -> Option<VariantId> {
@@ -1252,7 +1252,7 @@ impl<'db> SemanticsImpl<'db> {
fn to_def<T: ToDef>(&self, src: &T) -> Option<T::Def> {
let src = self.find_file(src.syntax()).with_value(src).cloned();
- T::to_def(&self, src)
+ T::to_def(self, src)
}
fn to_module_def(&self, file: FileId) -> impl Iterator<Item = Module> {
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs
index e2fa1d5cab..059b80bcf1 100644
--- a/crates/hir/src/source_analyzer.rs
+++ b/crates/hir/src/source_analyzer.rs
@@ -228,7 +228,7 @@ impl SourceAnalyzer {
db: &dyn HirDatabase,
pat: &ast::Pat,
) -> Option<SmallVec<[Type; 1]>> {
- let pat_id = self.pat_id(&pat)?;
+ let pat_id = self.pat_id(pat)?;
let infer = self.infer.as_ref()?;
Some(
infer
@@ -270,7 +270,7 @@ impl SourceAnalyzer {
db: &dyn HirDatabase,
await_expr: &ast::AwaitExpr,
) -> Option<FunctionId> {
- let mut ty = self.ty_of_expr(db, &await_expr.expr()?.into())?.clone();
+ let mut ty = self.ty_of_expr(db, &await_expr.expr()?)?.clone();
let into_future_trait = self
.resolver
@@ -316,7 +316,7 @@ impl SourceAnalyzer {
ast::UnaryOp::Not => name![not],
ast::UnaryOp::Neg => name![neg],
};
- let ty = self.ty_of_expr(db, &prefix_expr.expr()?.into())?;
+ let ty = self.ty_of_expr(db, &prefix_expr.expr()?)?;
let (op_trait, op_fn) = self.lang_trait_fn(db, &lang_item_name, &lang_item_name)?;
// HACK: subst for all methods coincides with that for their trait because the methods
@@ -331,8 +331,8 @@ impl SourceAnalyzer {
db: &dyn HirDatabase,
index_expr: &ast::IndexExpr,
) -> Option<FunctionId> {
- let base_ty = self.ty_of_expr(db, &index_expr.base()?.into())?;
- let index_ty = self.ty_of_expr(db, &index_expr.index()?.into())?;
+ let base_ty = self.ty_of_expr(db, &index_expr.base()?)?;
+ let index_ty = self.ty_of_expr(db, &index_expr.index()?)?;
let lang_item_name = name![index];
@@ -352,8 +352,8 @@ impl SourceAnalyzer {
binop_expr: &ast::BinExpr,
) -> Option<FunctionId> {
let op = binop_expr.op_kind()?;
- let lhs = self.ty_of_expr(db, &binop_expr.lhs()?.into())?;
- let rhs = self.ty_of_expr(db, &binop_expr.rhs()?.into())?;
+ let lhs = self.ty_of_expr(db, &binop_expr.lhs()?)?;
+ let rhs = self.ty_of_expr(db, &binop_expr.rhs()?)?;
let (op_trait, op_fn) = lang_names_for_bin_op(op)
.and_then(|(name, lang_item)| self.lang_trait_fn(db, &lang_item, &name))?;
@@ -372,7 +372,7 @@ impl SourceAnalyzer {
db: &dyn HirDatabase,
try_expr: &ast::TryExpr,
) -> Option<FunctionId> {
- let ty = self.ty_of_expr(db, &try_expr.expr()?.into())?;
+ let ty = self.ty_of_expr(db, &try_expr.expr()?)?;
let op_fn =
db.lang_item(self.resolver.krate(), name![branch].to_smol_str())?.as_function()?;
@@ -824,7 +824,7 @@ impl SourceAnalyzer {
}
fn ty_of_expr(&self, db: &dyn HirDatabase, expr: &ast::Expr) -> Option<&Ty> {
- self.infer.as_ref()?.type_of_expr.get(self.expr_id(db, &expr)?)
+ self.infer.as_ref()?.type_of_expr.get(self.expr_id(db, expr)?)
}
}
@@ -987,7 +987,7 @@ fn resolve_hir_path_(
db,
def,
res.in_type_ns()?,
- |name, id| (name == unresolved.name).then(|| id),
+ |name, id| (name == unresolved.name).then_some(id),
)
})
.map(TypeAlias::from)
diff --git a/crates/ide-assists/src/handlers/add_missing_match_arms.rs b/crates/ide-assists/src/handlers/add_missing_match_arms.rs
index 73f4db4e5f..8e4ac69ae6 100644
--- a/crates/ide-assists/src/handlers/add_missing_match_arms.rs
+++ b/crates/ide-assists/src/handlers/add_missing_match_arms.rs
@@ -326,7 +326,7 @@ impl ExtendedEnum {
fn resolve_enum_def(sema: &Semantics<'_, RootDatabase>, expr: &ast::Expr) -> Option<ExtendedEnum> {
sema.type_of_expr(expr)?.adjusted().autoderef(sema.db).find_map(|ty| match ty.as_adt() {
Some(Adt::Enum(e)) => Some(ExtendedEnum::Enum(e)),
- _ => ty.is_bool().then(|| ExtendedEnum::Bool),
+ _ => ty.is_bool().then_some(ExtendedEnum::Bool),
})
}
@@ -344,7 +344,7 @@ fn resolve_tuple_of_enum_def(
// For now we only handle expansion for a tuple of enums. Here
// we map non-enum items to None and rely on `collect` to
// convert Vec<Option<hir::Enum>> into Option<Vec<hir::Enum>>.
- _ => ty.is_bool().then(|| ExtendedEnum::Bool),
+ _ => ty.is_bool().then_some(ExtendedEnum::Bool),
})
})
.collect()
diff --git a/crates/ide-assists/src/handlers/add_return_type.rs b/crates/ide-assists/src/handlers/add_return_type.rs
index 89040a8569..879c478acf 100644
--- a/crates/ide-assists/src/handlers/add_return_type.rs
+++ b/crates/ide-assists/src/handlers/add_return_type.rs
@@ -35,16 +35,16 @@ pub(crate) fn add_return_type(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opt
match builder_edit_pos {
InsertOrReplace::Insert(insert_pos, needs_whitespace) => {
let preceeding_whitespace = if needs_whitespace { " " } else { "" };
- builder.insert(insert_pos, &format!("{preceeding_whitespace}-> {ty} "))
+ builder.insert(insert_pos, format!("{preceeding_whitespace}-> {ty} "))
}
InsertOrReplace::Replace(text_range) => {
- builder.replace(text_range, &format!("-> {ty}"))
+ builder.replace(text_range, format!("-> {ty}"))
}
}
if let FnType::Closure { wrap_expr: true } = fn_type {
cov_mark::hit!(wrap_closure_non_block_expr);
// `|x| x` becomes `|x| -> T x` which is invalid, so wrap it in a block
- builder.replace(tail_expr.syntax().text_range(), &format!("{{{tail_expr}}}"));
+ builder.replace(tail_expr.syntax().text_range(), format!("{{{tail_expr}}}"));
}
},
)
diff --git a/crates/ide-assists/src/handlers/auto_import.rs b/crates/ide-assists/src/handlers/auto_import.rs
index a689270bc0..698ad78cce 100644
--- a/crates/ide-assists/src/handlers/auto_import.rs
+++ b/crates/ide-assists/src/handlers/auto_import.rs
@@ -203,7 +203,7 @@ fn relevance_score(
// get the distance between the imported path and the current module
// (prefer items that are more local)
Some((item_module, current_module)) => {
- score -= module_distance_hueristic(db, &current_module, &item_module) as i32;
+ score -= module_distance_hueristic(db, current_module, &item_module) as i32;
}
// could not find relevant modules, so just use the length of the path as an estimate
diff --git a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs
index 80eecf4a09..f32ef2d59d 100644
--- a/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs
+++ b/crates/ide-assists/src/handlers/convert_iter_for_each_to_for.rs
@@ -216,7 +216,7 @@ fn validate_method_call_expr(
let krate = module.krate();
let iter_trait = FamousDefs(sema, krate).core_iter_Iterator()?;
- it_type.impls_trait(sema.db, iter_trait, &[]).then(|| (expr, receiver))
+ it_type.impls_trait(sema.db, iter_trait, &[]).then_some((expr, receiver))
}
#[cfg(test)]
diff --git a/crates/ide-assists/src/handlers/extract_function.rs b/crates/ide-assists/src/handlers/extract_function.rs
index 4ee9d4638b..74f74b793a 100644
--- a/crates/ide-assists/src/handlers/extract_function.rs
+++ b/crates/ide-assists/src/handlers/extract_function.rs
@@ -588,7 +588,7 @@ impl FunctionBody {
FunctionBody::Expr(expr) => Some(expr.clone()),
FunctionBody::Span { parent, text_range } => {
let tail_expr = parent.tail_expr()?;
- text_range.contains_range(tail_expr.syntax().text_range()).then(|| tail_expr)
+ text_range.contains_range(tail_expr.syntax().text_range()).then_some(tail_expr)
}
}
}
diff --git a/crates/ide-assists/src/handlers/extract_module.rs b/crates/ide-assists/src/handlers/extract_module.rs
index 81df190825..0fa7bd558b 100644
--- a/crates/ide-assists/src/handlers/extract_module.rs
+++ b/crates/ide-assists/src/handlers/extract_module.rs
@@ -118,13 +118,13 @@ pub(crate) fn extract_module(acc: &mut Assists, ctx: &AssistContext<'_>) -> Opti
let mut body_items: Vec<String> = Vec::new();
let mut items_to_be_processed: Vec<ast::Item> = module.body_items.clone();
- let mut new_item_indent = old_item_indent + 1;
- if impl_parent.is_some() {
- new_item_indent = old_item_indent + 2;
+ let new_item_indent = if impl_parent.is_some() {
+ old_item_indent + 2
} else {
items_to_be_processed = [module.use_items.clone(), items_to_be_processed].concat();
- }
+ old_item_indent + 1
+ };
for item in items_to_be_processed {
let item = item.indent(IndentLevel(1));
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 b4e10667b0..49debafe1a 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
@@ -178,7 +178,7 @@ fn extract_generic_params(
.fold(false, |tagged, ty| tag_generics_in_variant(&ty, &mut generics) || tagged),
};
- let generics = generics.into_iter().filter_map(|(param, tag)| tag.then(|| param));
+ let generics = generics.into_iter().filter_map(|(param, tag)| tag.then_some(param));
tagged_one.then(|| make::generic_param_list(generics))
}
diff --git a/crates/ide-assists/src/handlers/generate_default_from_new.rs b/crates/ide-assists/src/handlers/generate_default_from_new.rs
index 49d9fd707f..2d074a33e7 100644
--- a/crates/ide-assists/src/handlers/generate_default_from_new.rs
+++ b/crates/ide-assists/src/handlers/generate_default_from_new.rs
@@ -53,7 +53,7 @@ pub(crate) fn generate_default_from_new(acc: &mut Assists, ctx: &AssistContext<'
return None;
}
- let impl_ = fn_node.syntax().ancestors().into_iter().find_map(ast::Impl::cast)?;
+ let impl_ = fn_node.syntax().ancestors().find_map(ast::Impl::cast)?;
if is_default_implemented(ctx, &impl_) {
cov_mark::hit!(default_block_is_already_present);
cov_mark::hit!(struct_in_module_with_default);
diff --git a/crates/ide-assists/src/handlers/generate_deref.rs b/crates/ide-assists/src/handlers/generate_deref.rs
index 55b7afb3d3..b6958e2919 100644
--- a/crates/ide-assists/src/handlers/generate_deref.rs
+++ b/crates/ide-assists/src/handlers/generate_deref.rs
@@ -85,8 +85,7 @@ fn generate_tuple_deref(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option<()
let strukt = ctx.find_node_at_offset::<ast::Struct>()?;
let field = ctx.find_node_at_offset::<ast::TupleField>()?;
let field_list = ctx.find_node_at_offset::<ast::TupleFieldList>()?;
- let field_list_index =
- field_list.syntax().children().into_iter().position(|s| &s == field.syntax())?;
+ let field_list_index = field_list.syntax().children().position(|s| &s == field.syntax())?;
let deref_type_to_generate = match existing_deref_impl(&ctx.sema, &strukt) {
None => DerefType::Deref,
diff --git a/crates/ide-assists/src/handlers/generate_enum_variant.rs b/crates/ide-assists/src/handlers/generate_enum_variant.rs
index 0bcb572831..cd037f7492 100644
--- a/crates/ide-assists/src/handlers/generate_enum_variant.rs
+++ b/crates/ide-assists/src/handlers/generate_enum_variant.rs
@@ -180,7 +180,7 @@ fn make_tuple_field_list(
) -> Option<ast::FieldList> {
let args = call_expr.arg_list()?.args();
let tuple_fields = args.map(|arg| {
- let ty = expr_ty(ctx, arg, &scope).unwrap_or_else(make::ty_placeholder);
+ let ty = expr_ty(ctx, arg, scope).unwrap_or_else(make::ty_placeholder);
make::tuple_field(None, ty)
});
Some(make::tuple_field_list(tuple_fields).into())
diff --git a/crates/ide-assists/src/handlers/generate_function.rs b/crates/ide-assists/src/handlers/generate_function.rs
index 57f198748c..da9b0cda5b 100644
--- a/crates/ide-assists/src/handlers/generate_function.rs
+++ b/crates/ide-assists/src/handlers/generate_function.rs
@@ -514,7 +514,7 @@ fn fn_args(
/// vec!["foo_1".into(), "foo_2".into(), "bar_1".into(), "baz".into(), "bar_2".into()];
/// assert_eq!(names, expected);
/// ```
-fn deduplicate_arg_names(arg_names: &mut Vec<String>) {
+fn deduplicate_arg_names(arg_names: &mut [String]) {
let mut arg_name_counts = FxHashMap::default();
for name in arg_names.iter() {
*arg_name_counts.entry(name).or_insert(0) += 1;
diff --git a/crates/ide-assists/src/handlers/generate_getter.rs b/crates/ide-assists/src/handlers/generate_getter.rs
index a82dde2333..15641b448d 100644
--- a/crates/ide-assists/src/handlers/generate_getter.rs
+++ b/crates/ide-assists/src/handlers/generate_getter.rs
@@ -176,7 +176,7 @@ pub(crate) fn generate_getter_impl(
// for separating it from other assoc items, that needs
// to be handled spearately
let mut getter_buf =
- generate_getter_from_info(ctx, &getter_info, &record_field_info);
+ generate_getter_from_info(ctx, &getter_info, record_field_info);
// Insert `$0` only for last getter we generate
if i == record_fields_count - 1 {
@@ -271,7 +271,7 @@ fn generate_getter_from_info(
}}",
vis,
record_field_info.fn_name,
- info.mutable.then(|| "mut ").unwrap_or_default(),
+ info.mutable.then_some("mut ").unwrap_or_default(),
ty,
body,
);
diff --git a/crates/ide-assists/src/handlers/generate_new.rs b/crates/ide-assists/src/handlers/generate_new.rs
index 17fadea0ea..8d311262a7 100644
--- a/crates/ide-assists/src/handlers/generate_new.rs
+++ b/crates/ide-assists/src/handlers/generate_new.rs
@@ -70,7 +70,7 @@ pub(crate) fn generate_new(acc: &mut Assists, ctx: &AssistContext<'_>) -> Option
)?;
let expr = use_trivial_constructor(
- &ctx.sema.db,
+ ctx.sema.db,
ide_db::helpers::mod_path_to_ast(&type_path),
&ty,
)?;
diff --git a/crates/ide-assists/src/handlers/inline_type_alias.rs b/crates/ide-assists/src/handlers/inline_type_alias.rs
index 353d467ed1..5982e9d61d 100644
--- a/crates/ide-assists/src/handlers/inline_type_alias.rs
+++ b/crates/ide-assists/src/handlers/inline_type_alias.rs
@@ -138,7 +138,7 @@ pub(crate) fn inline_type_alias(acc: &mut Assists, ctx: &AssistContext<'_>) -> O
replacement = Replacement::Plain;
}
_ => {
- let alias = get_type_alias(&ctx, &alias_instance)?;
+ let alias = get_type_alias(ctx, &alias_instance)?;
concrete_type = alias.ty()?;
replacement = inline(&alias, &alias_instance)?;
}
@@ -158,7 +158,7 @@ impl Replacement {
fn to_text(&self, concrete_type: &ast::Type) -> String {
match self {
Replacement::Generic { lifetime_map, const_and_type_map } => {
- create_replacement(&lifetime_map, &const_and_type_map, &concrete_type)
+ create_replacement(lifetime_map, const_and_type_map, concrete_type)
}
Replacement::Plain => concrete_type.to_string(),
}
@@ -240,7 +240,7 @@ impl ConstAndTypeMap {
) -> Option<Self> {
let mut inner = HashMap::new();
let instance_generics = generic_args_to_const_and_type_generics(instance_args);
- let alias_generics = generic_param_list_to_const_and_type_generics(&alias_generics);
+ let alias_generics = generic_param_list_to_const_and_type_generics(alias_generics);
if instance_generics.len() > alias_generics.len() {
cov_mark::hit!(too_many_generic_args);
diff --git a/crates/ide-assists/src/handlers/remove_dbg.rs b/crates/ide-assists/src/handlers/remove_dbg.rs
index 99ae60e07b..52dd670ec2 100644
--- a/crates/ide-assists/src/handlers/remove_dbg.rs
+++ b/crates/ide-assists/src/handlers/remove_dbg.rs
@@ -64,7 +64,7 @@ fn compute_dbg_replacement(macro_call: ast::MacroCall) -> Option<(TextRange, Str
let input_expressions = mac_input.group_by(|tok| tok.kind() == T![,]);
let input_expressions = input_expressions
.into_iter()
- .filter_map(|(is_sep, group)| (!is_sep).then(|| group))
+ .filter_map(|(is_sep, group)| (!is_sep).then_some(group))
.map(|mut tokens| syntax::hacks::parse_expr_from_str(&tokens.join("")))
.collect::<Option<Vec<ast::Expr>>>()?;
diff --git a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs
index c177adc7a1..6626ce0795 100644
--- a/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs
+++ b/crates/ide-assists/src/handlers/replace_turbofish_with_explicit_type.rs
@@ -42,7 +42,7 @@ pub(crate) fn replace_turbofish_with_explicit_type(
let r_angle = generic_args.r_angle_token()?;
let turbofish_range = TextRange::new(colon2.text_range().start(), r_angle.text_range().end());
- let turbofish_args: Vec<GenericArg> = generic_args.generic_args().into_iter().collect();
+ let turbofish_args: Vec<GenericArg> = generic_args.generic_args().collect();
// Find type of ::<_>
if turbofish_args.len() != 1 {
diff --git a/crates/ide-assists/src/handlers/unnecessary_async.rs b/crates/ide-assists/src/handlers/unnecessary_async.rs
index 0439883225..7f612c2a14 100644
--- a/crates/ide-assists/src/handlers/unnecessary_async.rs
+++ b/crates/ide-assists/src/handlers/unnecessary_async.rs
@@ -107,7 +107,7 @@ fn find_all_references(
/// If no await expression is found, returns None.
fn find_await_expression(ctx: &AssistContext<'_>, nameref: &NameRef) -> Option<ast::AwaitExpr> {
// From the nameref, walk up the tree to the await expression.
- let await_expr = if let Some(path) = full_path_of_name_ref(&nameref) {
+ let await_expr = if let Some(path) = full_path_of_name_ref(nameref) {
// Function calls.
path.syntax()
.parent()
diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs
index c574d6bc63..b4f50c7fb2 100644
--- a/crates/ide-assists/src/tests/sourcegen.rs
+++ b/crates/ide-assists/src/tests/sourcegen.rs
@@ -95,8 +95,7 @@ impl Assist {
let id = block.id;
assert!(
id.chars().all(|it| it.is_ascii_lowercase() || it == '_'),
- "invalid assist id: {:?}",
- id
+ "invalid assist id: {id:?}"
);
let mut lines = block.contents.iter().peekable();
let location = sourcegen::Location { file: path.to_path_buf(), line: block.line };
diff --git a/crates/ide-assists/src/utils.rs b/crates/ide-assists/src/utils.rs
index f38a2d04ff..57c37e5b83 100644
--- a/crates/ide-assists/src/utils.rs
+++ b/crates/ide-assists/src/utils.rs
@@ -613,7 +613,7 @@ pub(crate) fn convert_reference_type(
}
fn handle_copy(ty: &hir::Type, db: &dyn HirDatabase) -> Option<ReferenceConversionType> {
- ty.is_copy(db).then(|| ReferenceConversionType::Copy)
+ ty.is_copy(db).then_some(ReferenceConversionType::Copy)
}
fn handle_as_ref_str(
@@ -624,7 +624,7 @@ fn handle_as_ref_str(
let str_type = hir::BuiltinType::str().ty(db);
ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[str_type])
- .then(|| ReferenceConversionType::AsRefStr)
+ .then_some(ReferenceConversionType::AsRefStr)
}
fn handle_as_ref_slice(
@@ -636,7 +636,7 @@ fn handle_as_ref_slice(
let slice_type = hir::Type::new_slice(type_argument);
ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[slice_type])
- .then(|| ReferenceConversionType::AsRefSlice)
+ .then_some(ReferenceConversionType::AsRefSlice)
}
fn handle_dereferenced(
@@ -647,7 +647,7 @@ fn handle_dereferenced(
let type_argument = ty.type_arguments().next()?;
ty.impls_trait(db, famous_defs.core_convert_AsRef()?, &[type_argument])
- .then(|| ReferenceConversionType::Dereferenced)
+ .then_some(ReferenceConversionType::Dereferenced)
}
fn handle_option_as_ref(
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 f32e5ce97d..d4abb51259 100644
--- a/crates/ide-assists/src/utils/gen_trait_fn_body.rs
+++ b/crates/ide-assists/src/utils/gen_trait_fn_body.rs
@@ -419,7 +419,7 @@ fn gen_partial_eq(adt: &ast::Adt, func: &ast::Fn) -> Option<()> {
make::ext::path_from_idents(["Self", &variant.name()?.to_string()])
}
- fn gen_tuple_field(field_name: &String) -> ast::Pat {
+ fn gen_tuple_field(field_name: &str) -> ast::Pat {
ast::Pat::IdentPat(make::ident_pat(false, false, make::name(field_name)))
}
diff --git a/crates/ide-completion/src/completions/attribute.rs b/crates/ide-completion/src/completions/attribute.rs
index d9fe94cb44..bb950c76f8 100644
--- a/crates/ide-completion/src/completions/attribute.rs
+++ b/crates/ide-completion/src/completions/attribute.rs
@@ -357,7 +357,7 @@ fn parse_comma_sep_expr(input: ast::TokenTree) -> Option<Vec<ast::Expr>> {
Some(
input_expressions
.into_iter()
- .filter_map(|(is_sep, group)| (!is_sep).then(|| group))
+ .filter_map(|(is_sep, group)| (!is_sep).then_some(group))
.filter_map(|mut tokens| syntax::hacks::parse_expr_from_str(&tokens.join("")))
.collect::<Vec<ast::Expr>>(),
)
@@ -371,9 +371,7 @@ fn attributes_are_sorted() {
attrs.for_each(|next| {
assert!(
prev < next,
- r#"ATTRIBUTES array is not sorted, "{}" should come after "{}""#,
- prev,
- next
+ r#"ATTRIBUTES array is not sorted, "{prev}" should come after "{next}""#
);
prev = next;
});
diff --git a/crates/ide-completion/src/completions/dot.rs b/crates/ide-completion/src/completions/dot.rs
index 02004ff7b6..7c6e5e100f 100644
--- a/crates/ide-completion/src/completions/dot.rs
+++ b/crates/ide-completion/src/completions/dot.rs
@@ -32,12 +32,12 @@ pub(crate) fn complete_dot(
complete_fields(
acc,
ctx,
- &receiver_ty,
+ receiver_ty,
|acc, field, ty| acc.add_field(ctx, dot_access, None, field, &ty),
|acc, field, ty| acc.add_tuple_field(ctx, None, field, &ty),
);
}
- complete_methods(ctx, &receiver_ty, |func| acc.add_method(ctx, dot_access, func, None, None));
+ complete_methods(ctx, receiver_ty, |func| acc.add_method(ctx, dot_access, func, None, None));
}
pub(crate) fn complete_undotted_self(
diff --git a/crates/ide-completion/src/completions/env_vars.rs b/crates/ide-completion/src/completions/env_vars.rs
index a094e857bb..1002be2113 100644
--- a/crates/ide-completion/src/completions/env_vars.rs
+++ b/crates/ide-completion/src/completions/env_vars.rs
@@ -68,28 +68,26 @@ mod tests {
&format!(
r#"
#[rustc_builtin_macro]
- macro_rules! {} {{
+ macro_rules! {macro_name} {{
($var:literal) => {{ 0 }}
}}
fn main() {{
- let foo = {}!("CAR$0");
+ let foo = {macro_name}!("CAR$0");
}}
- "#,
- macro_name, macro_name
+ "#
),
&format!(
r#"
#[rustc_builtin_macro]
- macro_rules! {} {{
+ macro_rules! {macro_name} {{
($var:literal) => {{ 0 }}
}}
fn main() {{
- let foo = {}!("CARGO_BIN_NAME");
+ let foo = {macro_name}!("CARGO_BIN_NAME");
}}
- "#,
- macro_name, macro_name
+ "#
),
);
}
diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs
index 3192b21cfb..cfe4787f73 100644
--- a/crates/ide-completion/src/completions/expr.rs
+++ b/crates/ide-completion/src/completions/expr.rs
@@ -64,7 +64,7 @@ pub(crate) fn complete_expr_path(
acc.add_enum_variants(ctx, path_ctx, e);
}
- ctx.iterate_path_candidates(&ty, |item| {
+ ctx.iterate_path_candidates(ty, |item| {
add_assoc_item(acc, item);
});
diff --git a/crates/ide-completion/src/completions/format_string.rs b/crates/ide-completion/src/completions/format_string.rs
index 038bdb4279..5c46c5806e 100644
--- a/crates/ide-completion/src/completions/format_string.rs
+++ b/crates/ide-completion/src/completions/format_string.rs
@@ -13,7 +13,7 @@ pub(crate) fn format_string(
original: &ast::String,
expanded: &ast::String,
) {
- if !is_format_string(&expanded) {
+ if !is_format_string(expanded) {
return;
}
let cursor = ctx.position.offset;
diff --git a/crates/ide-completion/src/completions/item_list/trait_impl.rs b/crates/ide-completion/src/completions/item_list/trait_impl.rs
index 21ec13bba0..9a060857e9 100644
--- a/crates/ide-completion/src/completions/item_list/trait_impl.rs
+++ b/crates/ide-completion/src/completions/item_list/trait_impl.rs
@@ -845,11 +845,10 @@ trait Test {{
struct T;
impl Test for T {{
- {}
- {}
+ {hint}
+ {next_sibling}
}}
-"#,
- hint, next_sibling
+"#
),
&format!(
r#"
@@ -861,11 +860,10 @@ trait Test {{
struct T;
impl Test for T {{
- {}
- {}
+ {completed}
+ {next_sibling}
}}
-"#,
- completed, next_sibling
+"#
),
)
};
@@ -905,10 +903,9 @@ struct T;
impl Foo for T {{
// Comment
#[bar]
- {}
+ {hint}
}}
-"#,
- hint
+"#
),
&format!(
r#"
@@ -922,10 +919,9 @@ struct T;
impl Foo for T {{
// Comment
#[bar]
- {}
+ {completed}
}}
-"#,
- completed
+"#
),
)
};
diff --git a/crates/ide-completion/src/completions/postfix.rs b/crates/ide-completion/src/completions/postfix.rs
index 2404491c1f..3db400604b 100644
--- a/crates/ide-completion/src/completions/postfix.rs
+++ b/crates/ide-completion/src/completions/postfix.rs
@@ -153,8 +153,7 @@ pub(crate) fn complete_postfix(
"match",
"match expr {}",
&format!(
- "match {} {{\n Some(${{1:_}}) => {{$2}},\n None => {{$0}},\n}}",
- receiver_text
+ "match {receiver_text} {{\n Some(${{1:_}}) => {{$2}},\n None => {{$0}},\n}}"
),
)
.add_to(acc);
diff --git a/crates/ide-completion/src/completions/type.rs b/crates/ide-completion/src/completions/type.rs
index 8f9db2f94c..37849c251a 100644
--- a/crates/ide-completion/src/completions/type.rs
+++ b/crates/ide-completion/src/completions/type.rs
@@ -58,7 +58,7 @@ pub(crate) fn complete_type_path(
trait_.items(ctx.sema.db).into_iter().for_each(|item| add_assoc_item(acc, item))
}
Qualified::TypeAnchor { ty: Some(ty), trait_: None } => {
- ctx.iterate_path_candidates(&ty, |item| {
+ ctx.iterate_path_candidates(ty, |item| {
add_assoc_item(acc, item);
});
diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs
index c412fd575c..e34824e22e 100644
--- a/crates/ide-completion/src/context/analysis.rs
+++ b/crates/ide-completion/src/context/analysis.rs
@@ -226,7 +226,7 @@ fn analyze(
find_node_at_offset(&file_with_fake_ident, offset)
{
let parent = name_ref.syntax().parent()?;
- let (mut nameref_ctx, _) = classify_name_ref(&sema, &original_file, name_ref, parent)?;
+ let (mut nameref_ctx, _) = classify_name_ref(sema, &original_file, name_ref, parent)?;
if let NameRefKind::Path(path_ctx) = &mut nameref_ctx.kind {
path_ctx.kind = PathKind::Derive {
existing_derives: sema
@@ -277,7 +277,7 @@ fn analyze(
return Some((analysis, (None, None), QualifierCtx::default()));
}
};
- let expected = expected_type_and_name(sema, &self_token, &name_like);
+ let expected = expected_type_and_name(sema, self_token, &name_like);
let mut qual_ctx = QualifierCtx::default();
let analysis = match name_like {
ast::NameLike::Lifetime(lifetime) => {
@@ -374,7 +374,7 @@ fn expected_type_and_name(
ast::ArgList(_) => {
cov_mark::hit!(expected_type_fn_param);
ActiveParameter::at_token(
- &sema,
+ sema,
token.clone(),
).map(|ap| {
let name = ap.ident().map(NameOrNameRef::Name);
@@ -507,7 +507,7 @@ fn classify_lifetime(
_ => LifetimeKind::Lifetime,
}
};
- let lifetime = find_node_at_offset(&original_file, lifetime.syntax().text_range().start());
+ let lifetime = find_node_at_offset(original_file, lifetime.syntax().text_range().start());
Some(LifetimeContext { lifetime, kind })
}
@@ -548,7 +548,7 @@ fn classify_name(
_ => return None,
}
};
- let name = find_node_at_offset(&original_file, name.syntax().text_range().start());
+ let name = find_node_at_offset(original_file, name.syntax().text_range().start());
Some(NameContext { name, kind })
}
@@ -558,7 +558,7 @@ fn classify_name_ref(
name_ref: ast::NameRef,
parent: SyntaxNode,
) -> Option<(NameRefContext, QualifierCtx)> {
- let nameref = find_node_at_offset(&original_file, name_ref.syntax().text_range().start());
+ let nameref = find_node_at_offset(original_file, name_ref.syntax().text_range().start());
let make_res = |kind| (NameRefContext { nameref: nameref.clone(), kind }, Default::default());
diff --git a/crates/ide-completion/src/render/union_literal.rs b/crates/ide-completion/src/render/union_literal.rs
index 2d55a1bade..1b09ad1731 100644
--- a/crates/ide-completion/src/render/union_literal.rs
+++ b/crates/ide-completion/src/render/union_literal.rs
@@ -68,7 +68,7 @@ pub(crate) fn render_union_literal(
item.set_documentation(ctx.docs(un))
.set_deprecated(ctx.is_deprecated(un))
- .detail(&detail)
+ .detail(detail)
.set_relevance(ctx.completion_relevance());
match ctx.snippet_cap() {
diff --git a/crates/ide-completion/src/tests.rs b/crates/ide-completion/src/tests.rs
index d206377e17..abe14e48e2 100644
--- a/crates/ide-completion/src/tests.rs
+++ b/crates/ide-completion/src/tests.rs
@@ -183,7 +183,7 @@ pub(crate) fn check_edit_with_config(
let ra_fixture_after = trim_indent(ra_fixture_after);
let (db, position) = position(ra_fixture_before);
let completions: Vec<CompletionItem> =
- crate::completions(&db, &config, position, None).unwrap().into();
+ crate::completions(&db, &config, position, None).unwrap();
let (completion,) = completions
.iter()
.filter(|it| it.lookup() == what)
diff --git a/crates/ide-db/src/imports/merge_imports.rs b/crates/ide-db/src/imports/merge_imports.rs
index 371d642c15..27b6321f3a 100644
--- a/crates/ide-db/src/imports/merge_imports.rs
+++ b/crates/ide-db/src/imports/merge_imports.rs
@@ -91,7 +91,7 @@ fn recursive_merge(lhs: &ast::UseTree, rhs: &ast::UseTree, merge: MergeBehavior)
.flat_map(|list| list.use_trees())
// We use Option here to early return from this function(this is not the
// same as a `filter` op).
- .map(|tree| merge.is_tree_allowed(&tree).then(|| tree))
+ .map(|tree| merge.is_tree_allowed(&tree).then_some(tree))
.collect::<Option<_>>()?;
use_trees.sort_unstable_by(|a, b| path_cmp_for_sort(a.path(), b.path()));
for rhs_t in rhs.use_tree_list().into_iter().flat_map(|list| list.use_trees()) {
diff --git a/crates/ide-db/src/search.rs b/crates/ide-db/src/search.rs
index aa5d7e9beb..b2b0e49085 100644
--- a/crates/ide-db/src/search.rs
+++ b/crates/ide-db/src/search.rs
@@ -608,7 +608,7 @@ impl<'a> FindUsages<'a> {
let reference = FileReference {
range,
name: ast::NameLike::NameRef(name_ref.clone()),
- category: is_name_ref_in_import(name_ref).then(|| ReferenceCategory::Import),
+ category: is_name_ref_in_import(name_ref).then_some(ReferenceCategory::Import),
};
sink(file_id, reference)
}
@@ -787,7 +787,7 @@ impl ReferenceCategory {
fn new(def: &Definition, r: &ast::NameRef) -> Option<ReferenceCategory> {
// Only Locals and Fields have accesses for now.
if !matches!(def, Definition::Local(_) | Definition::Field(_)) {
- return is_name_ref_in_import(r).then(|| ReferenceCategory::Import);
+ return is_name_ref_in_import(r).then_some(ReferenceCategory::Import);
}
let mode = r.syntax().ancestors().find_map(|node| {
diff --git a/crates/ide-db/src/syntax_helpers/node_ext.rs b/crates/ide-db/src/syntax_helpers/node_ext.rs
index aa03478599..a34dc1b695 100644
--- a/crates/ide-db/src/syntax_helpers/node_ext.rs
+++ b/crates/ide-db/src/syntax_helpers/node_ext.rs
@@ -452,7 +452,7 @@ pub fn parse_tt_as_comma_sep_paths(input: ast::TokenTree) -> Option<Vec<ast::Pat
let input_expressions = tokens.group_by(|tok| tok.kind() == T![,]);
let paths = input_expressions
.into_iter()
- .filter_map(|(is_sep, group)| (!is_sep).then(|| group))
+ .filter_map(|(is_sep, group)| (!is_sep).then_some(group))
.filter_map(|mut tokens| {
syntax::hacks::parse_expr_from_str(&tokens.join("")).and_then(|expr| match expr {
ast::Expr::PathExpr(it) => it.path(),
diff --git a/crates/ide-diagnostics/src/handlers/missing_fields.rs b/crates/ide-diagnostics/src/handlers/missing_fields.rs
index 7f140eb6a7..43af4d4f16 100644
--- a/crates/ide-diagnostics/src/handlers/missing_fields.rs
+++ b/crates/ide-diagnostics/src/handlers/missing_fields.rs
@@ -128,9 +128,9 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::MissingFields) -> Option<Vec<Ass
)?;
use_trivial_constructor(
- &ctx.sema.db,
+ ctx.sema.db,
ide_db::helpers::mod_path_to_ast(&type_path),
- &ty,
+ ty,
)
})();
diff --git a/crates/ide-diagnostics/src/handlers/no_such_field.rs b/crates/ide-diagnostics/src/handlers/no_such_field.rs
index 8673524c10..8da04e628d 100644
--- a/crates/ide-diagnostics/src/handlers/no_such_field.rs
+++ b/crates/ide-diagnostics/src/handlers/no_such_field.rs
@@ -68,7 +68,7 @@ fn missing_record_expr_field_fixes(
}
let new_field = make::record_field(
None,
- make::name(&record_expr_field.field_name()?.ident_token()?.text()),
+ make::name(record_expr_field.field_name()?.ident_token()?.text()),
make::ty(&new_field_type.display_source_code(sema.db, module.into()).ok()?),
);
diff --git a/crates/ide-diagnostics/src/lib.rs b/crates/ide-diagnostics/src/lib.rs
index b0231b8754..64ba08ac88 100644
--- a/crates/ide-diagnostics/src/lib.rs
+++ b/crates/ide-diagnostics/src/lib.rs
@@ -229,7 +229,7 @@ pub fn diagnostics(
for node in parse.syntax().descendants() {
handlers::useless_braces::useless_braces(&mut res, file_id, &node);
handlers::field_shorthand::field_shorthand(&mut res, file_id, &node);
- handlers::json_is_not_rust::json_in_items(&sema, &mut res, file_id, &node, &config);
+ handlers::json_is_not_rust::json_in_items(&sema, &mut res, file_id, &node, config);
}
let module = sema.to_module_def(file_id);
diff --git a/crates/ide-diagnostics/src/tests/sourcegen.rs b/crates/ide-diagnostics/src/tests/sourcegen.rs
index 71d27e6d21..9e7fcfc590 100644
--- a/crates/ide-diagnostics/src/tests/sourcegen.rs
+++ b/crates/ide-diagnostics/src/tests/sourcegen.rs
@@ -11,7 +11,7 @@ fn sourcegen_diagnostic_docs() {
diagnostics.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
let contents = sourcegen::add_preamble("sourcegen_diagnostic_docs", contents);
let dst = project_root().join("docs/user/generated_diagnostic.adoc");
- fs::write(&dst, &contents).unwrap();
+ fs::write(dst, contents).unwrap();
}
#[derive(Debug)]
diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs
index 8569701346..b4a7f2b918 100644
--- a/crates/ide/src/doc_links.rs
+++ b/crates/ide/src/doc_links.rs
@@ -273,7 +273,7 @@ impl DocCommentToken {
let (in_expansion_range, link, ns) =
extract_definitions_from_docs(&docs).into_iter().find_map(|(range, link, ns)| {
let mapped = doc_mapping.map(range)?;
- (mapped.value.contains(abs_in_expansion_offset)).then(|| (mapped.value, link, ns))
+ (mapped.value.contains(abs_in_expansion_offset)).then_some((mapped.value, link, ns))
})?;
// get the relative range to the doc/attribute in the expansion
let in_expansion_relative_range = in_expansion_range - descended_prefix_len - token_start;
@@ -285,7 +285,7 @@ impl DocCommentToken {
}
}
-fn broken_link_clone_cb<'a>(link: BrokenLink<'a>) -> Option<(CowStr<'a>, CowStr<'a>)> {
+fn broken_link_clone_cb(link: BrokenLink<'_>) -> Option<(CowStr<'_>, CowStr<'_>)> {
Some((/*url*/ link.reference.clone(), /*title*/ link.reference))
}
diff --git a/crates/ide/src/expand_macro.rs b/crates/ide/src/expand_macro.rs
index 93252339cd..418043d679 100644
--- a/crates/ide/src/expand_macro.rs
+++ b/crates/ide/src/expand_macro.rs
@@ -163,7 +163,7 @@ fn _format(
) -> Option<String> {
use ide_db::base_db::{FileLoader, SourceDatabase};
// hack until we get hygiene working (same character amount to preserve formatting as much as possible)
- const DOLLAR_CRATE_REPLACE: &str = &"__r_a_";
+ const DOLLAR_CRATE_REPLACE: &str = "__r_a_";
let expansion = expansion.replace("$crate", DOLLAR_CRATE_REPLACE);
let (prefix, suffix) = match kind {
SyntaxKind::MACRO_PAT => ("fn __(", ": u32);"),
diff --git a/crates/ide/src/extend_selection.rs b/crates/ide/src/extend_selection.rs
index 45f1fd7484..9f78c75e90 100644
--- a/crates/ide/src/extend_selection.rs
+++ b/crates/ide/src/extend_selection.rs
@@ -205,7 +205,7 @@ fn extend_single_word_in_comment_or_string(
}
let start_idx = before.rfind(non_word_char)? as u32;
- let end_idx = after.find(non_word_char).unwrap_or_else(|| after.len()) as u32;
+ let end_idx = after.find(non_word_char).unwrap_or(after.len()) as u32;
let from: TextSize = (start_idx + 1).into();
let to: TextSize = (cursor_position + end_idx).into();
diff --git a/crates/ide/src/goto_implementation.rs b/crates/ide/src/goto_implementation.rs
index b3f711b6b8..190ab80ba0 100644
--- a/crates/ide/src/goto_implementation.rs
+++ b/crates/ide/src/goto_implementation.rs
@@ -110,7 +110,7 @@ fn impls_for_trait_item(
.filter_map(|imp| {
let item = imp.items(sema.db).iter().find_map(|itm| {
let itm_name = itm.name(sema.db)?;
- (itm_name == fun_name).then(|| *itm)
+ (itm_name == fun_name).then_some(*itm)
})?;
item.try_to_nav(sema.db)
})
diff --git a/crates/ide/src/highlight_related.rs b/crates/ide/src/highlight_related.rs
index 28f65a11cf..55f8779eed 100644
--- a/crates/ide/src/highlight_related.rs
+++ b/crates/ide/src/highlight_related.rs
@@ -110,7 +110,7 @@ fn highlight_references(
.and_then(|decl| decl.focus_range)
.map(|range| {
let category =
- references::decl_mutability(&def, node, range).then(|| ReferenceCategory::Write);
+ references::decl_mutability(&def, node, range).then_some(ReferenceCategory::Write);
HighlightedRange { range, category }
});
if let Some(hl_range) = hl_range {
@@ -365,7 +365,7 @@ mod tests {
let mut expected = annotations
.into_iter()
- .map(|(r, access)| (r.range, (!access.is_empty()).then(|| access)))
+ .map(|(r, access)| (r.range, (!access.is_empty()).then_some(access)))
.collect::<Vec<_>>();
let mut actual = hls
diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs
index bfb19a40bd..b214fa12a4 100644
--- a/crates/ide/src/hover.rs
+++ b/crates/ide/src/hover.rs
@@ -195,7 +195,7 @@ pub(crate) fn hover(
// fallback to type hover if there aren't any other suggestions
// this finds its own range instead of using the closest token's range
.or_else(|| {
- descended.iter().find_map(|token| hover_type_fallback(sema, config, token, &token))
+ descended.iter().find_map(|token| hover_type_fallback(sema, config, token, token))
})
}
diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs
index 4015a411c5..47257f0bfa 100644
--- a/crates/ide/src/hover/render.rs
+++ b/crates/ide/src/hover/render.rs
@@ -276,7 +276,7 @@ pub(super) fn struct_rest_pat(
}
};
for (_, t) in &missing_fields {
- walk_and_push_ty(sema.db, &t, &mut push_new_def);
+ walk_and_push_ty(sema.db, t, &mut push_new_def);
}
res.markup = {
diff --git a/crates/ide/src/inlay_hints.rs b/crates/ide/src/inlay_hints.rs
index 368c8aaa93..86d25e2f5a 100644
--- a/crates/ide/src/inlay_hints.rs
+++ b/crates/ide/src/inlay_hints.rs
@@ -253,7 +253,7 @@ fn label_of_ty(
ty: hir::Type,
label_builder: &mut InlayHintLabelBuilder<'_>,
) {
- let iter_item_type = hint_iterator(sema, &famous_defs, &ty);
+ let iter_item_type = hint_iterator(sema, famous_defs, &ty);
match iter_item_type {
Some(ty) => {
const LABEL_START: &str = "impl Iterator<Item = ";
@@ -279,7 +279,7 @@ fn label_of_ty(
location_link_enabled: config.location_links,
result: InlayHintLabel::default(),
};
- rec(sema, &famous_defs, config.max_length, ty, &mut label_builder);
+ rec(sema, famous_defs, config.max_length, ty, &mut label_builder);
let r = label_builder.finish();
Some(r)
}
@@ -315,7 +315,7 @@ pub(crate) fn inlay_hints(
let mut acc = Vec::new();
- if let Some(scope) = sema.scope(&file) {
+ if let Some(scope) = sema.scope(file) {
let famous_defs = FamousDefs(&sema, scope.krate());
let hints = |node| hints(&mut acc, &famous_defs, config, file_id, node);
diff --git a/crates/ide/src/inlay_hints/bind_pat.rs b/crates/ide/src/inlay_hints/bind_pat.rs
index 7127c433c6..adec19c765 100644
--- a/crates/ide/src/inlay_hints/bind_pat.rs
+++ b/crates/ide/src/inlay_hints/bind_pat.rs
@@ -167,7 +167,7 @@ fn is_named_constructor(
ast::PathSegmentKind::Type { type_ref: Some(ty), trait_ref: None } => ty.to_string(),
_ => return None,
};
- (ctor_name == ty_name).then(|| ())
+ (ctor_name == ty_name).then_some(())
}
fn pat_is_enum_variant(db: &RootDatabase, bind_pat: &ast::IdentPat, pat_ty: &hir::Type) -> bool {
diff --git a/crates/ide/src/inlay_hints/binding_mode.rs b/crates/ide/src/inlay_hints/binding_mode.rs
index b10dbba6ee..a0166d0048 100644
--- a/crates/ide/src/inlay_hints/binding_mode.rs
+++ b/crates/ide/src/inlay_hints/binding_mode.rs
@@ -31,7 +31,7 @@ pub(super) fn hints(
.last();
let range =
outer_paren_pat.as_ref().map_or_else(|| pat.syntax(), |it| it.syntax()).text_range();
- let pattern_adjustments = sema.pattern_adjustments(&pat);
+ let pattern_adjustments = sema.pattern_adjustments(pat);
pattern_adjustments.iter().for_each(|ty| {
let reference = ty.is_reference();
let mut_reference = ty.is_mutable_reference();
diff --git a/crates/ide/src/rename.rs b/crates/ide/src/rename.rs
index 595a3b8ac4..15bdf14fb9 100644
--- a/crates/ide/src/rename.rs
+++ b/crates/ide/src/rename.rs
@@ -364,11 +364,8 @@ mod tests {
}
Err(err) => {
if ra_fixture_after.starts_with("error:") {
- let error_message = ra_fixture_after
- .chars()
- .into_iter()
- .skip("error:".len())
- .collect::<String>();
+ let error_message =
+ ra_fixture_after.chars().skip("error:".len()).collect::<String>();
assert_eq!(error_message.trim(), err.to_string());
} else {
panic!("Rename to '{new_name}' failed unexpectedly: {err}")
diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs
index a06c6abf28..892e6a9bb0 100644
--- a/crates/ide/src/syntax_highlighting/highlight.rs
+++ b/crates/ide/src/syntax_highlighting/highlight.rs
@@ -111,7 +111,7 @@ fn punctuation(
let is_raw_ptr = (|| {
let prefix_expr = parent.and_then(ast::PrefixExpr::cast)?;
let expr = prefix_expr.expr()?;
- sema.type_of_expr(&expr)?.original.is_raw_ptr().then(|| ())
+ sema.type_of_expr(&expr)?.original.is_raw_ptr().then_some(())
})();
if let Some(()) = is_raw_ptr {
HlTag::Operator(HlOperator::Other) | HlMod::Unsafe
diff --git a/crates/mbe/src/lib.rs b/crates/mbe/src/lib.rs
index c4f0fa20d6..2373db97a3 100644
--- a/crates/mbe/src/lib.rs
+++ b/crates/mbe/src/lib.rs
@@ -140,7 +140,7 @@ impl Shift {
| tt::Leaf::Punct(tt::Punct { id, .. })
| tt::Leaf::Literal(tt::Literal { id, .. })) = leaf;
- (id != tt::TokenId::unspecified()).then(|| id.0)
+ (id != tt::TokenId::unspecified()).then_some(id.0)
}
};
subtree.token_trees.iter().filter_map(filter).max()
diff --git a/crates/mbe/src/parser.rs b/crates/mbe/src/parser.rs
index 3d9a61dbc8..fad905e97f 100644
--- a/crates/mbe/src/parser.rs
+++ b/crates/mbe/src/parser.rs
@@ -116,9 +116,9 @@ enum Mode {
Template,
}
-fn next_op<'a>(
+fn next_op(
first_peeked: &tt::TokenTree,
- src: &mut TtIter<'a>,
+ src: &mut TtIter<'_>,
mode: Mode,
) -> Result<Op, ParseError> {
let res = match first_peeked {
@@ -273,7 +273,7 @@ fn parse_repeat(src: &mut TtIter<'_>) -> Result<(Option<Separator>, RepeatKind),
_ => return Err(ParseError::InvalidRepeat),
},
};
- return Ok((has_sep.then(|| separator), repeat_kind));
+ return Ok((has_sep.then_some(separator), repeat_kind));
}
}
}
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs
index 4ca3ba74ae..5c96505563 100644
--- a/crates/mbe/src/syntax_bridge.rs
+++ b/crates/mbe/src/syntax_bridge.rs
@@ -145,7 +145,7 @@ pub fn parse_exprs_with_sep(tt: &tt::Subtree, sep: char) -> Vec<tt::Subtree> {
}
if iter.peek_n(0).is_some() {
- res.push(tt::Subtree { delimiter: None, token_trees: iter.into_iter().cloned().collect() });
+ res.push(tt::Subtree { delimiter: None, token_trees: iter.cloned().collect() });
}
res
diff --git a/crates/mbe/src/syntax_bridge/tests.rs b/crates/mbe/src/syntax_bridge/tests.rs
index 606c259e51..c1a6083655 100644
--- a/crates/mbe/src/syntax_bridge/tests.rs
+++ b/crates/mbe/src/syntax_bridge/tests.rs
@@ -30,7 +30,7 @@ fn check_punct_spacing(fixture: &str) {
while !cursor.eof() {
while let Some(token_tree) = cursor.token_tree() {
if let TokenTreeRef::Leaf(Leaf::Punct(Punct { spacing, id, .. }), _) = token_tree {
- if let Some(expected) = annotations.remove(&id) {
+ if let Some(expected) = annotations.remove(id) {
assert_eq!(expected, *spacing);
}
}
diff --git a/crates/parser/src/grammar/paths.rs b/crates/parser/src/grammar/paths.rs
index 5dc9c6c82a..af3b6f63cf 100644
--- a/crates/parser/src/grammar/paths.rs
+++ b/crates/parser/src/grammar/paths.rs
@@ -83,11 +83,12 @@ fn path_segment(p: &mut Parser<'_>, mode: Mode, first: bool) {
}
p.expect(T![>]);
} else {
- let mut empty = true;
- if first {
+ let empty = if first {
p.eat(T![::]);
- empty = false;
- }
+ false
+ } else {
+ true
+ };
match p.current() {
IDENT => {
name_ref(p);
diff --git a/crates/parser/src/output.rs b/crates/parser/src/output.rs
index e9ec9822d6..6ca841cfe0 100644
--- a/crates/parser/src/output.rs
+++ b/crates/parser/src/output.rs
@@ -54,7 +54,7 @@ impl Output {
}
pub(crate) fn token(&mut self, kind: SyntaxKind, n_tokens: u8) {
- let e = ((kind as u16 as u32) << 16) | ((n_tokens as u32) << 8) | (0 << 4) | 1;
+ let e = ((kind as u16 as u32) << 16) | ((n_tokens as u32) << 8) | 1;
self.event.push(e)
}
diff --git a/crates/proc-macro-api/src/msg/flat.rs b/crates/proc-macro-api/src/msg/flat.rs
index f50ecccf1e..b178c46263 100644
--- a/crates/proc-macro-api/src/msg/flat.rs
+++ b/crates/proc-macro-api/src/msg/flat.rs
@@ -210,7 +210,7 @@ impl<'a> Writer<'a> {
let idx_tag = match child {
tt::TokenTree::Subtree(it) => {
let idx = self.enqueue(it);
- idx << 2 | 0b00
+ idx << 2
}
tt::TokenTree::Leaf(leaf) => match leaf {
tt::Leaf::Literal(lit) => {
diff --git a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs
index d38bd9400b..068f79f824 100644
--- a/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs
+++ b/crates/proc-macro-srv/src/abis/abi_sysroot/ra_server.rs
@@ -182,7 +182,7 @@ impl server::TokenStream for RustAnalyzer {
.map(|tree| match tree {
tt::TokenTree::Leaf(tt::Leaf::Ident(ident)) => {
bridge::TokenTree::Ident(bridge::Ident {
- sym: Symbol::intern(&ident.text.trim_start_matches("r#")),
+ sym: Symbol::intern(ident.text.trim_start_matches("r#")),
is_raw: ident.text.starts_with("r#"),
span: ident.id,
})
diff --git a/crates/proc-macro-srv/src/tests/utils.rs b/crates/proc-macro-srv/src/tests/utils.rs
index 44b1b6588d..efbeb90ca9 100644
--- a/crates/proc-macro-srv/src/tests/utils.rs
+++ b/crates/proc-macro-srv/src/tests/utils.rs
@@ -30,12 +30,12 @@ fn assert_expand_impl(macro_name: &str, input: &str, attr: Option<&str>, expect:
let attr = attr.map(|attr| parse_string(attr).unwrap().into_subtree());
let res = expander.expand(macro_name, &fixture.into_subtree(), attr.as_ref()).unwrap();
- expect.assert_eq(&format!("{:?}", res));
+ expect.assert_eq(&format!("{res:?}"));
}
pub(crate) fn list() -> Vec<String> {
let dylib_path = proc_macro_test_dylib_path();
let mut srv = ProcMacroSrv::default();
let res = srv.list_macros(&dylib_path).unwrap();
- res.into_iter().map(|(name, kind)| format!("{} [{:?}]", name, kind)).collect()
+ res.into_iter().map(|(name, kind)| format!("{name} [{kind:?}]")).collect()
}
diff --git a/crates/profile/src/lib.rs b/crates/profile/src/lib.rs
index 00f7952e80..7ca3c7d629 100644
--- a/crates/profile/src/lib.rs
+++ b/crates/profile/src/lib.rs
@@ -114,11 +114,11 @@ impl Drop for CpuSpan {
match out {
Ok(out) if out.status.success() => {
let svg = profile_data.with_extension("svg");
- std::fs::write(&svg, &out.stdout).unwrap();
+ std::fs::write(&svg, out.stdout).unwrap();
eprintln!("Profile rendered to:\n\n {}\n", svg.display());
}
_ => {
- eprintln!("Failed to run:\n\n {:?}\n", cmd);
+ eprintln!("Failed to run:\n\n {cmd:?}\n");
}
}
}
diff --git a/crates/project-model/src/build_scripts.rs b/crates/project-model/src/build_scripts.rs
index ae9cba52de..6550cf27e9 100644
--- a/crates/project-model/src/build_scripts.rs
+++ b/crates/project-model/src/build_scripts.rs
@@ -66,7 +66,7 @@ impl WorkspaceBuildScripts {
_ => {
let mut cmd = Command::new(toolchain::cargo());
- cmd.args(&["check", "--quiet", "--workspace", "--message-format=json"]);
+ cmd.args(["check", "--quiet", "--workspace", "--message-format=json"]);
// --all-targets includes tests, benches and examples in addition to the
// default lib and bins. This is an independent concept from the --target
@@ -74,7 +74,7 @@ impl WorkspaceBuildScripts {
cmd.arg("--all-targets");
if let Some(target) = &config.target {
- cmd.args(&["--target", target]);
+ cmd.args(["--target", target]);
}
match &config.features {
@@ -122,7 +122,7 @@ impl WorkspaceBuildScripts {
InvocationLocation::Root(root) if config.run_build_script_command.is_some() => {
root.as_path()
}
- _ => &workspace.workspace_root(),
+ _ => workspace.workspace_root(),
}
.as_ref();
@@ -133,7 +133,7 @@ impl WorkspaceBuildScripts {
// building build scripts failed, attempt to build with --keep-going so
// that we potentially get more build data
let mut cmd = Self::build_command(config)?;
- cmd.args(&["-Z", "unstable-options", "--keep-going"]).env("RUSTC_BOOTSTRAP", "1");
+ cmd.args(["-Z", "unstable-options", "--keep-going"]).env("RUSTC_BOOTSTRAP", "1");
let mut res = Self::run_per_ws(cmd, workspace, current_dir, progress)?;
res.error = Some(error);
Ok(res)
@@ -303,8 +303,7 @@ impl WorkspaceBuildScripts {
Ok(it) => acc.push(it),
Err(err) => {
push_err(&format!(
- "invalid cfg from cargo-metadata: {}",
- err
+ "invalid cfg from cargo-metadata: {err}"
));
return;
}
diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs
index 93f44d1ef5..467cf09178 100644
--- a/crates/project-model/src/cargo_workspace.rs
+++ b/crates/project-model/src/cargo_workspace.rs
@@ -411,7 +411,7 @@ impl CargoWorkspace {
CargoWorkspace { packages, targets, workspace_root }
}
- pub fn packages<'a>(&'a self) -> impl Iterator<Item = Package> + ExactSizeIterator + 'a {
+ pub fn packages(&self) -> impl Iterator<Item = Package> + ExactSizeIterator + '_ {
self.packages.iter().map(|(id, _pkg)| id)
}
@@ -517,7 +517,7 @@ fn cargo_config_build_target(
cargo_config.envs(extra_env);
cargo_config
.current_dir(cargo_toml.parent())
- .args(&["-Z", "unstable-options", "config", "get", "build.target"])
+ .args(["-Z", "unstable-options", "config", "get", "build.target"])
.env("RUSTC_BOOTSTRAP", "1");
// if successful we receive `build.target = "target-triple"`
// or `build.target = ["<target 1>", ..]`
diff --git a/crates/project-model/src/rustc_cfg.rs b/crates/project-model/src/rustc_cfg.rs
index 12c8cf70dc..0066f6717e 100644
--- a/crates/project-model/src/rustc_cfg.rs
+++ b/crates/project-model/src/rustc_cfg.rs
@@ -50,10 +50,10 @@ fn get_rust_cfgs(
cargo_config.envs(extra_env);
cargo_config
.current_dir(cargo_toml.parent())
- .args(&["rustc", "-Z", "unstable-options", "--print", "cfg"])
+ .args(["rustc", "-Z", "unstable-options", "--print", "cfg"])
.env("RUSTC_BOOTSTRAP", "1");
if let Some(target) = target {
- cargo_config.args(&["--target", target]);
+ cargo_config.args(["--target", target]);
}
match utf8_stdout(cargo_config) {
Ok(it) => return Ok(it),
@@ -63,9 +63,9 @@ fn get_rust_cfgs(
// using unstable cargo features failed, fall back to using plain rustc
let mut cmd = Command::new(toolchain::rustc());
cmd.envs(extra_env);
- cmd.args(&["--print", "cfg", "-O"]);
+ cmd.args(["--print", "cfg", "-O"]);
if let Some(target) = target {
- cmd.args(&["--target", target]);
+ cmd.args(["--target", target]);
}
utf8_stdout(cmd)
}
diff --git a/crates/project-model/src/sysroot.rs b/crates/project-model/src/sysroot.rs
index b62b2026b6..8d5ab0061e 100644
--- a/crates/project-model/src/sysroot.rs
+++ b/crates/project-model/src/sysroot.rs
@@ -171,7 +171,7 @@ fn discover_sysroot_dir(
) -> Result<AbsPathBuf> {
let mut rustc = Command::new(toolchain::rustc());
rustc.envs(extra_env);
- rustc.current_dir(current_dir).args(&["--print", "sysroot"]);
+ rustc.current_dir(current_dir).args(["--print", "sysroot"]);
tracing::debug!("Discovering sysroot by {:?}", rustc);
let stdout = utf8_stdout(rustc)?;
Ok(AbsPathBuf::assert(PathBuf::from(stdout)))
@@ -203,7 +203,7 @@ fn discover_sysroot_src_dir_or_add_component(
.or_else(|| {
let mut rustup = Command::new(toolchain::rustup());
rustup.envs(extra_env);
- rustup.current_dir(current_dir).args(&["component", "add", "rust-src"]);
+ rustup.current_dir(current_dir).args(["component", "add", "rust-src"]);
tracing::info!("adding rust-src component by {:?}", rustup);
utf8_stdout(rustup).ok()?;
get_rust_src(sysroot_path)
diff --git a/crates/project-model/src/target_data_layout.rs b/crates/project-model/src/target_data_layout.rs
index b9d7d2338c..40cf47c3f5 100644
--- a/crates/project-model/src/target_data_layout.rs
+++ b/crates/project-model/src/target_data_layout.rs
@@ -15,10 +15,10 @@ pub(super) fn get(
let mut cmd = Command::new(toolchain::rustc());
cmd.envs(extra_env);
cmd.current_dir(cargo_toml.parent())
- .args(&["-Z", "unstable-options", "rustc", "--print", "target-spec-json"])
+ .args(["-Z", "unstable-options", "rustc", "--print", "target-spec-json"])
.env("RUSTC_BOOTSTRAP", "1");
if let Some(target) = target {
- cmd.args(&["--target", target]);
+ cmd.args(["--target", target]);
}
match utf8_stdout(cmd) {
Ok(it) => return Ok(it),
@@ -28,10 +28,10 @@ pub(super) fn get(
// using unstable cargo features failed, fall back to using plain rustc
let mut cmd = Command::new(toolchain::rustc());
cmd.envs(extra_env)
- .args(&["-Z", "unstable-options", "rustc", "--print", "target-spec-json"])
+ .args(["-Z", "unstable-options", "rustc", "--print", "target-spec-json"])
.env("RUSTC_BOOTSTRAP", "1");
if let Some(target) = target {
- cmd.args(&["--target", target]);
+ cmd.args(["--target", target]);
}
utf8_stdout(cmd)
})()
diff --git a/crates/project-model/src/workspace.rs b/crates/project-model/src/workspace.rs
index 52ac3b6dc0..e2382aa37e 100644
--- a/crates/project-model/src/workspace.rs
+++ b/crates/project-model/src/workspace.rs
@@ -407,7 +407,7 @@ impl ProjectWorkspace {
["libexec", "lib"]
.into_iter()
.map(|segment| sysroot.root().join(segment).join(&standalone_server_name))
- .find(|server_path| std::fs::metadata(&server_path).is_ok())
+ .find(|server_path| std::fs::metadata(server_path).is_ok())
}
_ => None,
}
diff --git a/crates/rust-analyzer/src/caps.rs b/crates/rust-analyzer/src/caps.rs
index 723b888d9a..122d2e6ff1 100644
--- a/crates/rust-analyzer/src/caps.rs
+++ b/crates/rust-analyzer/src/caps.rs
@@ -42,7 +42,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities {
"(".to_string(),
]),
all_commit_characters: None,
- completion_item: completion_item(&config),
+ completion_item: completion_item(config),
work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
}),
signature_help_provider: Some(SignatureHelpOptions {
@@ -67,7 +67,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities {
},
document_on_type_formatting_provider: Some(DocumentOnTypeFormattingOptions {
first_trigger_character: "=".to_string(),
- more_trigger_character: Some(more_trigger_character(&config)),
+ more_trigger_character: Some(more_trigger_character(config)),
}),
selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)),
folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)),
diff --git a/crates/rust-analyzer/src/cli/scip.rs b/crates/rust-analyzer/src/cli/scip.rs
index b1a803d28c..b050d1e95a 100644
--- a/crates/rust-analyzer/src/cli/scip.rs
+++ b/crates/rust-analyzer/src/cli/scip.rs
@@ -102,7 +102,7 @@ impl flags::Scip {
let symbol = tokens_to_symbol
.entry(id)
.or_insert_with(|| {
- let symbol = token_to_symbol(&token).unwrap_or_else(&mut new_local_symbol);
+ let symbol = token_to_symbol(token).unwrap_or_else(&mut new_local_symbol);
scip::symbol::format_symbol(symbol)
})
.clone();
@@ -176,7 +176,7 @@ fn get_relative_filepath(
rootpath: &vfs::AbsPathBuf,
file_id: ide::FileId,
) -> Option<String> {
- Some(vfs.file_path(file_id).as_path()?.strip_prefix(&rootpath)?.as_ref().to_str()?.to_string())
+ Some(vfs.file_path(file_id).as_path()?.strip_prefix(rootpath)?.as_ref().to_str()?.to_string())
}
// SCIP Ranges have a (very large) optimization that ranges if they are on the same line
diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs
index dc876720de..4ee92b3d4e 100644
--- a/crates/rust-analyzer/src/config.rs
+++ b/crates/rust-analyzer/src/config.rs
@@ -1908,9 +1908,7 @@ fn field_props(field: &str, ty: &str, doc: &[&str], default: &str) -> serde_json
let doc = doc.trim_end_matches('\n');
assert!(
doc.ends_with('.') && doc.starts_with(char::is_uppercase),
- "bad docs for {}: {:?}",
- field,
- doc
+ "bad docs for {field}: {doc:?}"
);
let default = default.parse::<serde_json::Value>().unwrap();
@@ -2213,17 +2211,16 @@ fn manual(fields: &[(&'static str, &'static str, &[&str], &str)]) -> String {
let doc = doc_comment_to_string(doc);
if default.contains('\n') {
format!(
- r#"[[{}]]{}::
+ r#"[[{name}]]{name}::
+
--
Default:
----
-{}
+{default}
----
-{}
+{doc}
--
-"#,
- name, name, default, doc
+"#
)
} else {
format!("[[{name}]]{name} (default: `{default}`)::\n+\n--\n{doc}--\n")
diff --git a/crates/rust-analyzer/src/diagnostics.rs b/crates/rust-analyzer/src/diagnostics.rs
index f516c194da..83b03fe473 100644
--- a/crates/rust-analyzer/src/diagnostics.rs
+++ b/crates/rust-analyzer/src/diagnostics.rs
@@ -101,8 +101,7 @@ impl DiagnosticCollection {
file_id: FileId,
) -> impl Iterator<Item = &lsp_types::Diagnostic> {
let native = self.native.get(&file_id).into_iter().flatten();
- let check =
- self.check.values().filter_map(move |it| it.get(&file_id)).into_iter().flatten();
+ let check = self.check.values().filter_map(move |it| it.get(&file_id)).flatten();
native.chain(check)
}
diff --git a/crates/rust-analyzer/src/diagnostics/to_proto.rs b/crates/rust-analyzer/src/diagnostics/to_proto.rs
index 80be43fe80..acb416a068 100644
--- a/crates/rust-analyzer/src/diagnostics/to_proto.rs
+++ b/crates/rust-analyzer/src/diagnostics/to_proto.rs
@@ -505,8 +505,7 @@ fn rustc_code_description(code: Option<&str>) -> Option<lsp_types::CodeDescripti
fn clippy_code_description(code: Option<&str>) -> Option<lsp_types::CodeDescription> {
code.and_then(|code| {
lsp_types::Url::parse(&format!(
- "https://rust-lang.github.io/rust-clippy/master/index.html#{}",
- code
+ "https://rust-lang.github.io/rust-clippy/master/index.html#{code}"
))
.ok()
.map(|href| lsp_types::CodeDescription { href })
diff --git a/crates/rust-analyzer/src/from_proto.rs b/crates/rust-analyzer/src/from_proto.rs
index 4e7095b3ce..2dbb14fcd9 100644
--- a/crates/rust-analyzer/src/from_proto.rs
+++ b/crates/rust-analyzer/src/from_proto.rs
@@ -25,12 +25,9 @@ pub(crate) fn vfs_path(url: &lsp_types::Url) -> Result<vfs::VfsPath> {
pub(crate) fn offset(line_index: &LineIndex, position: lsp_types::Position) -> Result<TextSize> {
let line_col = match line_index.encoding {
- PositionEncoding::Utf8 => {
- LineCol { line: position.line as u32, col: position.character as u32 }
- }
+ PositionEncoding::Utf8 => LineCol { line: position.line, col: position.character },
PositionEncoding::Utf16 => {
- let line_col =
- LineColUtf16 { line: position.line as u32, col: position.character as u32 };
+ let line_col = LineColUtf16 { line: position.line, col: position.character };
line_index.index.to_utf8(line_col)
}
};
diff --git a/crates/rust-analyzer/src/handlers.rs b/crates/rust-analyzer/src/handlers.rs
index 33f5b8a4ef..59bdd30612 100644
--- a/crates/rust-analyzer/src/handlers.rs
+++ b/crates/rust-analyzer/src/handlers.rs
@@ -1101,9 +1101,7 @@ pub(crate) fn handle_code_action(
}
// Fixes from `cargo check`.
- for fix in
- snap.check_fixes.values().filter_map(|it| it.get(&frange.file_id)).into_iter().flatten()
- {
+ for fix in snap.check_fixes.values().filter_map(|it| it.get(&frange.file_id)).flatten() {
// FIXME: this mapping is awkward and shouldn't exist. Refactor
// `snap.check_fixes` to not convert to LSP prematurely.
let intersect_fix_range = fix
diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs
index 9cedcf1bec..0bc940dfe8 100644
--- a/crates/rust-analyzer/src/main_loop.rs
+++ b/crates/rust-analyzer/src/main_loop.rs
@@ -414,10 +414,7 @@ impl GlobalState {
let loop_duration = loop_start.elapsed();
if loop_duration > Duration::from_millis(100) && was_quiescent {
tracing::warn!("overly long loop turn: {:?}", loop_duration);
- self.poke_rust_analyzer_developer(format!(
- "overly long loop turn: {:?}",
- loop_duration
- ));
+ self.poke_rust_analyzer_developer(format!("overly long loop turn: {loop_duration:?}"));
}
Ok(())
}
@@ -880,7 +877,7 @@ impl GlobalState {
if let Ok(vfs_path) = from_proto::vfs_path(&params.text_document.uri) {
// Re-fetch workspaces if a workspace related file has changed
if let Some(abs_path) = vfs_path.as_path() {
- if reload::should_refresh_for_change(&abs_path, ChangeKind::Modify) {
+ if reload::should_refresh_for_change(abs_path, ChangeKind::Modify) {
this.fetch_workspaces_queue
.request_op(format!("DidSaveTextDocument {}", abs_path.display()));
}
diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs
index c48410ed55..c2cc3f422d 100644
--- a/crates/rust-analyzer/src/semantic_tokens.rs
+++ b/crates/rust-analyzer/src/semantic_tokens.rs
@@ -161,8 +161,8 @@ impl SemanticTokensBuilder {
/// Push a new token onto the builder
pub(crate) fn push(&mut self, range: Range, token_index: u32, modifier_bitset: u32) {
- let mut push_line = range.start.line as u32;
- let mut push_char = range.start.character as u32;
+ let mut push_line = range.start.line;
+ let mut push_char = range.start.character;
if !self.data.is_empty() {
push_line -= self.prev_line;
@@ -177,15 +177,15 @@ impl SemanticTokensBuilder {
let token = SemanticToken {
delta_line: push_line,
delta_start: push_char,
- length: token_len as u32,
+ length: token_len,
token_type: token_index,
token_modifiers_bitset: modifier_bitset,
};
self.data.push(token);
- self.prev_line = range.start.line as u32;
- self.prev_char = range.start.character as u32;
+ self.prev_line = range.start.line;
+ self.prev_char = range.start.character;
}
pub(crate) fn build(self) -> SemanticTokens {
diff --git a/crates/rust-analyzer/src/to_proto.rs b/crates/rust-analyzer/src/to_proto.rs
index 6773fc40e1..a12bd3952c 100644
--- a/crates/rust-analyzer/src/to_proto.rs
+++ b/crates/rust-analyzer/src/to_proto.rs
@@ -228,7 +228,7 @@ fn completion_item(
max_relevance: u32,
item: CompletionItem,
) {
- let insert_replace_support = config.insert_replace_support().then(|| tdpp.position);
+ let insert_replace_support = config.insert_replace_support().then_some(tdpp.position);
let mut additional_text_edits = Vec::new();
// LSP does not allow arbitrary edits in completion, so we have to do a
@@ -258,7 +258,7 @@ fn completion_item(
text_edit.unwrap()
};
- let insert_text_format = item.is_snippet().then(|| lsp_types::InsertTextFormat::SNIPPET);
+ let insert_text_format = item.is_snippet().then_some(lsp_types::InsertTextFormat::SNIPPET);
let tags = item.deprecated().then(|| vec![lsp_types::CompletionItemTag::DEPRECATED]);
let command = if item.trigger_call_info() && config.client_commands().trigger_parameter_hints {
Some(command::trigger_parameter_hints())
diff --git a/crates/rust-analyzer/tests/slow-tests/main.rs b/crates/rust-analyzer/tests/slow-tests/main.rs
index 76eb60ac7c..5e3e19d44d 100644
--- a/crates/rust-analyzer/tests/slow-tests/main.rs
+++ b/crates/rust-analyzer/tests/slow-tests/main.rs
@@ -528,14 +528,13 @@ fn test_missing_module_code_action_in_json_project() {
let code = format!(
r#"
//- /rust-project.json
-{PROJECT}
+{project}
//- /src/lib.rs
mod bar;
fn main() {{}}
"#,
- PROJECT = project,
);
let server =
@@ -605,13 +604,12 @@ name = "foo"
version = "0.0.0"
//- /src/lib.rs
-{}
+{librs}
-{}
+{libs}
fn main() {{}}
-"#,
- librs, libs
+"#
))
.with_config(serde_json::json!({
"cargo": { "sysroot": "discover" }
diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
index 7465ca9ab5..2eafb0da69 100644
--- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
+++ b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs
@@ -14,7 +14,7 @@ fn sourcegen_feature_docs() {
contents.trim()
);
let dst = sourcegen::project_root().join("docs/user/generated_features.adoc");
- fs::write(&dst, &contents).unwrap();
+ fs::write(dst, contents).unwrap();
}
#[derive(Debug)]
diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs
index a72c7eb91d..35b5af7319 100644
--- a/crates/rust-analyzer/tests/slow-tests/tidy.rs
+++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs
@@ -56,12 +56,11 @@ fn check_lsp_extensions_docs() {
"
lsp_ext.rs was changed without touching lsp-extensions.md.
-Expected hash: {:x}
-Actual hash: {:x}
+Expected hash: {expected_hash:x}
+Actual hash: {actual_hash:x}
Please adjust docs/dev/lsp-extensions.md.
-",
- expected_hash, actual_hash
+"
)
}
}
diff --git a/crates/sourcegen/src/lib.rs b/crates/sourcegen/src/lib.rs
index 9d7a0c480b..72d26635c3 100644
--- a/crates/sourcegen/src/lib.rs
+++ b/crates/sourcegen/src/lib.rs
@@ -65,10 +65,7 @@ impl CommentBlock {
let first = block.contents.remove(0);
first.strip_prefix(&tag).map(|id| {
if block.is_doc {
- panic!(
- "Use plain (non-doc) comments with tags like {}:\n {}",
- tag, first
- );
+ panic!("Use plain (non-doc) comments with tags like {tag}:\n {first}");
}
block.id = id.trim().to_string();
@@ -122,7 +119,7 @@ pub struct Location {
impl fmt::Display for Location {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let path = self.file.strip_prefix(&project_root()).unwrap().display().to_string();
+ let path = self.file.strip_prefix(project_root()).unwrap().display().to_string();
let path = path.replace('\\', "/");
let name = self.file.file_name().unwrap();
write!(
@@ -178,7 +175,7 @@ pub fn ensure_file_contents(file: &Path, contents: &str) {
}
}
- let display_path = file.strip_prefix(&project_root()).unwrap_or(file);
+ let display_path = file.strip_prefix(project_root()).unwrap_or(file);
eprintln!(
"\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n",
display_path.display()
diff --git a/crates/stdx/src/hash.rs b/crates/stdx/src/hash.rs
index 9909d71bdf..0c21d2674b 100644
--- a/crates/stdx/src/hash.rs
+++ b/crates/stdx/src/hash.rs
@@ -51,7 +51,7 @@ impl Hasher for NoHashHasher {
}
fn write_u64(&mut self, i: u64) {
- self.0 = i as u64;
+ self.0 = i;
}
fn write_usize(&mut self, i: usize) {
diff --git a/crates/syntax/src/algo.rs b/crates/syntax/src/algo.rs
index bcfece4503..c402a7bcea 100644
--- a/crates/syntax/src/algo.rs
+++ b/crates/syntax/src/algo.rs
@@ -646,8 +646,7 @@ fn main() {
.format_with("\n", |v, f| f(&format!("Line {}: {}", line_number(v), &fmt_syntax(v))));
let actual = format!(
- "insertions:\n\n{}\n\nreplacements:\n\n{}\n\ndeletions:\n\n{}\n",
- insertions, replacements, deletions
+ "insertions:\n\n{insertions}\n\nreplacements:\n\n{replacements}\n\ndeletions:\n\n{deletions}\n"
);
expected_diff.assert_eq(&actual);
diff --git a/crates/syntax/src/ast/edit_in_place.rs b/crates/syntax/src/ast/edit_in_place.rs
index d7ad4f332f..a493c92e7d 100644
--- a/crates/syntax/src/ast/edit_in_place.rs
+++ b/crates/syntax/src/ast/edit_in_place.rs
@@ -888,6 +888,6 @@ enum Foo {
let enum_ = ast_mut_from_text::<ast::Enum>(before);
enum_.variant_list().map(|it| it.add_variant(variant));
let after = enum_.to_string();
- assert_eq_text!(&trim_indent(expected.trim()), &trim_indent(&after.trim()));
+ assert_eq_text!(&trim_indent(expected.trim()), &trim_indent(after.trim()));
}
}
diff --git a/crates/syntax/src/ast/generated/nodes.rs b/crates/syntax/src/ast/generated/nodes.rs
index 86d222723d..a214a5e446 100644
--- a/crates/syntax/src/ast/generated/nodes.rs
+++ b/crates/syntax/src/ast/generated/nodes.rs
@@ -3921,7 +3921,7 @@ impl AnyHasArgList {
impl AstNode for AnyHasArgList {
fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, CALL_EXPR | METHOD_CALL_EXPR) }
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasArgList { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasArgList { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4006,7 +4006,7 @@ impl AstNode for AnyHasAttrs {
)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasAttrs { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasAttrs { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4043,7 +4043,7 @@ impl AstNode for AnyHasDocComments {
)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasDocComments { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasDocComments { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4058,7 +4058,7 @@ impl AstNode for AnyHasGenericParams {
matches!(kind, ENUM | FN | IMPL | STRUCT | TRAIT | TYPE_ALIAS | UNION)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasGenericParams { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasGenericParams { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4071,7 +4071,7 @@ impl AnyHasLoopBody {
impl AstNode for AnyHasLoopBody {
fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, FOR_EXPR | LOOP_EXPR | WHILE_EXPR) }
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasLoopBody { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasLoopBody { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4084,7 +4084,7 @@ impl AnyHasModuleItem {
impl AstNode for AnyHasModuleItem {
fn can_cast(kind: SyntaxKind) -> bool { matches!(kind, MACRO_ITEMS | SOURCE_FILE | ITEM_LIST) }
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasModuleItem { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasModuleItem { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4119,7 +4119,7 @@ impl AstNode for AnyHasName {
)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasName { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasName { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4137,7 +4137,7 @@ impl AstNode for AnyHasTypeBounds {
)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasTypeBounds { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasTypeBounds { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
@@ -4171,7 +4171,7 @@ impl AstNode for AnyHasVisibility {
)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| AnyHasVisibility { syntax })
+ Self::can_cast(syntax.kind()).then_some(AnyHasVisibility { syntax })
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
diff --git a/crates/syntax/src/tests.rs b/crates/syntax/src/tests.rs
index 9148c08b4a..168439053c 100644
--- a/crates/syntax/src/tests.rs
+++ b/crates/syntax/src/tests.rs
@@ -157,7 +157,7 @@ fn collect_rust_files(root_dir: &Path, paths: &[&str]) -> Vec<(PathBuf, String)>
/// Collects paths to all `.rs` files from `dir` in a sorted `Vec<PathBuf>`.
fn rust_files_in_dir(dir: &Path) -> Vec<PathBuf> {
let mut acc = Vec::new();
- for file in fs::read_dir(&dir).unwrap() {
+ for file in fs::read_dir(dir).unwrap() {
let file = file.unwrap();
let path = file.path();
if path.extension().unwrap_or_default() == "rs" {
diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs
index d66ff7365f..03aa2c451e 100644
--- a/crates/syntax/src/tests/sourcegen_ast.rs
+++ b/crates/syntax/src/tests/sourcegen_ast.rs
@@ -253,7 +253,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> String {
matches!(kind, #(#kinds)|*)
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
- Self::can_cast(syntax.kind()).then(|| #name { syntax })
+ Self::can_cast(syntax.kind()).then_some(#name { syntax })
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
diff --git a/crates/test-utils/src/assert_linear.rs b/crates/test-utils/src/assert_linear.rs
index d6acdde383..15c30c52a5 100644
--- a/crates/test-utils/src/assert_linear.rs
+++ b/crates/test-utils/src/assert_linear.rs
@@ -100,7 +100,7 @@ impl Round {
self.linear = rmse < 0.05 && max_error < 0.1 && a > -0.1;
- fn normalize(xs: &mut Vec<f64>) {
+ fn normalize(xs: &mut [f64]) {
let max = xs.iter().copied().max_by(|a, b| a.partial_cmp(b).unwrap()).unwrap();
xs.iter_mut().for_each(|it| *it /= max);
}
diff --git a/crates/test-utils/src/fixture.rs b/crates/test-utils/src/fixture.rs
index e7bc64620b..d1afd0039a 100644
--- a/crates/test-utils/src/fixture.rs
+++ b/crates/test-utils/src/fixture.rs
@@ -135,11 +135,9 @@ impl Fixture {
if line.contains("//-") {
assert!(
line.starts_with("//-"),
- "Metadata line {} has invalid indentation. \
+ "Metadata line {ix} has invalid indentation. \
All metadata lines need to have the same indentation.\n\
- The offending line: {:?}",
- ix,
- line
+ The offending line: {line:?}"
);
}
@@ -222,9 +220,7 @@ impl Fixture {
for prelude_dep in extern_prelude.iter().flatten() {
assert!(
deps.contains(prelude_dep),
- "extern-prelude {:?} must be a subset of deps {:?}",
- extern_prelude,
- deps
+ "extern-prelude {extern_prelude:?} must be a subset of deps {deps:?}"
);
}
@@ -348,11 +344,7 @@ impl MiniCore {
let mut keep = true;
for &region in &active_regions {
- assert!(
- !region.starts_with(' '),
- "region marker starts with a space: {:?}",
- region
- );
+ assert!(!region.starts_with(' '), "region marker starts with a space: {region:?}");
self.assert_valid_flag(region);
seen_regions.push(region);
keep &= self.has_flag(region);
diff --git a/crates/test-utils/src/lib.rs b/crates/test-utils/src/lib.rs
index ec3bf21405..a7a52e08e7 100644
--- a/crates/test-utils/src/lib.rs
+++ b/crates/test-utils/src/lib.rs
@@ -479,7 +479,7 @@ pub fn try_ensure_file_contents(file: &Path, contents: &str) -> Result<(), ()> {
}
_ => (),
}
- let display_path = file.strip_prefix(&project_root()).unwrap_or(file);
+ let display_path = file.strip_prefix(project_root()).unwrap_or(file);
eprintln!(
"\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n",
display_path.display()
diff --git a/lib/lsp-server/src/lib.rs b/lib/lsp-server/src/lib.rs
index 8c3c81feab..b95cec4f01 100644
--- a/lib/lsp-server/src/lib.rs
+++ b/lib/lsp-server/src/lib.rs
@@ -128,15 +128,11 @@ impl Connection {
self.sender.send(resp.into()).unwrap();
}
Ok(msg) => {
- return Err(ProtocolError(format!(
- "expected initialize request, got {:?}",
- msg
- )))
+ return Err(ProtocolError(format!("expected initialize request, got {msg:?}")))
}
Err(e) => {
return Err(ProtocolError(format!(
- "expected initialize request, got error: {}",
- e
+ "expected initialize request, got error: {e}"
)))
}
};
@@ -154,15 +150,11 @@ impl Connection {
match &self.receiver.recv() {
Ok(Message::Notification(n)) if n.is_initialized() => (),
Ok(msg) => {
- return Err(ProtocolError(format!(
- "expected Message::Notification, got: {:?}",
- msg,
- )))
+ return Err(ProtocolError(format!("expected Message::Notification, got: {msg:?}",)))
}
Err(e) => {
return Err(ProtocolError(format!(
- "expected initialized notification, got error: {}",
- e,
+ "expected initialized notification, got error: {e}",
)))
}
}
diff --git a/xtask/src/release/changelog.rs b/xtask/src/release/changelog.rs
index 90095df99e..d2a1483e38 100644
--- a/xtask/src/release/changelog.rs
+++ b/xtask/src/release/changelog.rs
@@ -63,31 +63,30 @@ pub(crate) fn get_changelog(
let contents = format!(
"\
-= Changelog #{}
+= Changelog #{changelog_n}
:sectanchors:
:experimental:
:page-layout: post
-Commit: commit:{}[] +
-Release: release:{}[]
+Commit: commit:{commit}[] +
+Release: release:{today}[]
== New Features
-{}
+{features}
== Fixes
-{}
+{fixes}
== Internal Improvements
-{}
+{internal}
== Others
-{}
-",
- changelog_n, commit, today, features, fixes, internal, others
+{others}
+"
);
Ok(contents)
}