Skip to content

Commit

Permalink
Fewer allocations
Browse files Browse the repository at this point in the history
  • Loading branch information
SomeoneToIgnore committed Dec 19, 2020
1 parent 0415dcd commit b45ec84
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions crates/completion/src/completions/unqualified_path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,9 @@ fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()
.filter(|(mod_path, _)| mod_path.len() > 1)
.collect::<Vec<_>>();

let user_input_lowercased = potential_import_name.to_lowercase();
all_mod_paths.sort_by_cached_key(|(mod_path, _)| {
compute_fuzzy_completion_order_key(mod_path, &potential_import_name)
compute_fuzzy_completion_order_key(mod_path, &user_input_lowercased)
});

acc.add_all(all_mod_paths.into_iter().filter_map(|(import_path, definition)| {
Expand All @@ -160,15 +161,16 @@ fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()
Some(())
}

fn compute_fuzzy_completion_order_key(proposed_mod_path: &ModPath, user_input: &str) -> usize {
fn compute_fuzzy_completion_order_key(
proposed_mod_path: &ModPath,
user_input_lowercased: &str,
) -> usize {
mark::hit!(certain_fuzzy_order_test);
let proposed_import_name = match proposed_mod_path.segments.last() {
Some(name) => name.to_string().to_lowercase(),
None => return usize::MAX,
};
let user_input = user_input.to_lowercase();

match proposed_import_name.match_indices(&user_input).next() {
match proposed_import_name.match_indices(user_input_lowercased).next() {
Some((first_matching_index, _)) => first_matching_index,
None => usize::MAX,
}
Expand Down

0 comments on commit b45ec84

Please sign in to comment.