Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/reload.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/crates/rust-analyzer/src/reload.rs b/crates/rust-analyzer/src/reload.rs
index 8dba83ed5e..abe2191f40 100644
--- a/crates/rust-analyzer/src/reload.rs
+++ b/crates/rust-analyzer/src/reload.rs
@@ -22,6 +22,7 @@ use ide_db::{
base_db::{salsa::Durability, CrateGraph, ProcMacroPaths, ProcMacros},
FxHashMap,
};
+use itertools::Itertools;
use load_cargo::{load_proc_macro, ProjectFolders};
use proc_macro_api::ProcMacroServer;
use project_model::{ProjectWorkspace, WorkspaceBuildScripts};
@@ -227,16 +228,12 @@ impl GlobalState {
let mut i = 0;
while i < workspaces.len() {
if let Ok(w) = &workspaces[i] {
- let dupes: Vec<_> = workspaces
+ let dupes: Vec<_> = workspaces[i + 1..]
.iter()
- .enumerate()
- .skip(i + 1)
- .filter_map(|(i, it)| {
- it.as_ref().ok().filter(|ws| ws.eq_ignore_build_data(w)).map(|_| i)
- })
+ .positions(|it| it.as_ref().is_ok_and(|ws| ws.eq_ignore_build_data(w)))
.collect();
dupes.into_iter().rev().for_each(|d| {
- _ = workspaces.remove(d);
+ _ = workspaces.remove(d + i + 1);
});
}
i += 1;