languages: Remove a eager conversion from LanguageName
to String
(#35667)
This PR changes the signature of `language_names` from ```rust pub fn language_names(&self) -> Vec<String> // Into pub fn language_names(&self) -> Vec<LanguageName> ``` The function previously eagerly converted `LanguageName`'s to `String`'s, which requires the reallocation of all of the elements. The functions get called in many places in the code base, but only one of which actually requires the conversion to a `String`. In one case it would do a `SharedString` -> `String` -> `SharedString` conversion, which is now totally bypassed. Release Notes: - N/A
This commit is contained in:
parent
a508a9536f
commit
c595ed19d6
8 changed files with 44 additions and 28 deletions
|
@ -149,13 +149,12 @@ impl ScopeSelectorDelegate {
|
|||
scope_selector: WeakEntity<ScopeSelector>,
|
||||
language_registry: Arc<LanguageRegistry>,
|
||||
) -> Self {
|
||||
let candidates = Vec::from([GLOBAL_SCOPE_NAME.to_string()]).into_iter();
|
||||
let languages = language_registry.language_names().into_iter();
|
||||
|
||||
let candidates = candidates
|
||||
let candidates = std::iter::once(LanguageName::new(GLOBAL_SCOPE_NAME))
|
||||
.chain(languages)
|
||||
.enumerate()
|
||||
.map(|(candidate_id, name)| StringMatchCandidate::new(candidate_id, &name))
|
||||
.map(|(candidate_id, name)| StringMatchCandidate::new(candidate_id, name.as_ref()))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut existing_scopes = HashSet::new();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue