about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2021-12-21 18:25:50 +0100
committerLukas Wirth <lukastw97@gmail.com>2021-12-21 18:28:04 +0100
commite76e0e843df1293dca40baa3790bfc7db993008d (patch)
tree7026973346ebfbbeb2b603802abd8e67bdabce25
parent0b1c434d5321addbdecd5c908ad82bb626cc7cbb (diff)
downloadrust-e76e0e843df1293dca40baa3790bfc7db993008d.tar.gz
rust-e76e0e843df1293dca40baa3790bfc7db993008d.zip
Simplify
-rw-r--r--crates/hir_def/src/import_map.rs20
-rw-r--r--crates/ide_completion/src/context.rs2
2 files changed, 14 insertions, 8 deletions
diff --git a/crates/hir_def/src/import_map.rs b/crates/hir_def/src/import_map.rs
index 27a05b87c1d..5e91a3df0a2 100644
--- a/crates/hir_def/src/import_map.rs
+++ b/crates/hir_def/src/import_map.rs
@@ -72,8 +72,12 @@ impl ImportMap {
 
         let mut import_map = collect_import_map(db, krate);
 
-        let mut importables = import_map.map.iter().collect::<Vec<_>>();
-        importables.sort_by_cached_key(|(_, import_info)| fst_path(&import_info.path));
+        let mut importables = import_map
+            .map
+            .iter()
+            .map(|(item, info)| (item, fst_path(&info.path)))
+            .collect::<Vec<_>>();
+        importables.sort_by(|(_, fst_path), (_, fst_path2)| fst_path.cmp(fst_path2));
 
         // Build the FST, taking care not to insert duplicate values.
 
@@ -81,20 +85,20 @@ impl ImportMap {
         let mut last_batch_start = 0;
 
         for idx in 0..importables.len() {
-            let key = fst_path(&importables[last_batch_start].1.path);
-            if let Some((_, next_import_info)) = importables.get(idx + 1) {
-                if key == fst_path(&next_import_info.path) {
+            let key = &importables[last_batch_start].1;
+            if let Some((_, fst_path)) = importables.get(idx + 1) {
+                if key == fst_path {
                     continue;
                 }
             }
 
-            builder.insert(key, last_batch_start as u64).unwrap();
+            let _ = builder.insert(key, last_batch_start as u64);
 
             last_batch_start = idx + 1;
         }
 
-        import_map.fst = fst::Map::new(builder.into_inner().unwrap()).unwrap();
-        import_map.importables = importables.iter().map(|(item, _)| **item).collect();
+        import_map.fst = builder.into_map();
+        import_map.importables = importables.iter().map(|&(&item, _)| item).collect();
 
         Arc::new(import_map)
     }
diff --git a/crates/ide_completion/src/context.rs b/crates/ide_completion/src/context.rs
index d0ed9889898..2a1891c76b2 100644
--- a/crates/ide_completion/src/context.rs
+++ b/crates/ide_completion/src/context.rs
@@ -302,6 +302,7 @@ impl<'a> CompletionContext<'a> {
 
     /// A version of [`SemanticsScope::process_all_names`] that filters out `#[doc(hidden)]` items.
     pub(crate) fn process_all_names(&self, f: &mut dyn FnMut(Name, ScopeDef)) {
+        let _p = profile::span("CompletionContext::process_all_names");
         self.scope.process_all_names(&mut |name, def| {
             if self.is_scope_def_hidden(def) {
                 return;
@@ -422,6 +423,7 @@ impl<'a> CompletionContext<'a> {
         mut offset: TextSize,
         mut fake_ident_token: SyntaxToken,
     ) {
+        let _p = profile::span("CompletionContext::expand_and_fill");
         loop {
             // Expand attributes
             if let (Some(actual_item), Some(item_with_fake_ident)) = (