mirror of
https://github.com/crate-ci/typos.git
synced 2024-12-26 01:22:08 -05:00
refactor(varcon): Remove reliance on const-fn
This dropped RSS (memory usage) from 4GB to 1.5GB when compiling. The extra `match` could impact performance but not too concerned since the default is to not look within vars.
This commit is contained in:
parent
b1cf03c7eb
commit
2b1f565eaa
3 changed files with 26899 additions and 26887 deletions
|
@ -79,7 +79,7 @@ fn generate_variations<W: std::io::Write>(file: &mut W) {
|
|||
|
||||
writeln!(
|
||||
file,
|
||||
"pub(crate) static VARS_DICTIONARY: &[(unicase::UniCase<&'static str>, &'static [(u8, &VariantsMap)])] = &["
|
||||
"pub(crate) static VARS_DICTIONARY: &[(crate::EncodedStr, &[(u8, &VariantsMap)])] = &["
|
||||
)
|
||||
.unwrap();
|
||||
let entry_sets = entry_sets(entries.iter());
|
||||
|
@ -93,9 +93,9 @@ fn generate_variations<W: std::io::Write>(file: &mut W) {
|
|||
let value = generate_link(&data);
|
||||
let word = unicase::UniCase::new(word);
|
||||
let key = if word.is_ascii() {
|
||||
format!("unicase::UniCase::ascii({:?})", word)
|
||||
format!("crate::EncodedStr::Ascii({:?})", word)
|
||||
} else {
|
||||
format!("unicase::UniCase::unicode({:?})", word)
|
||||
format!("crate::EncodedStr::Unicode({:?})", word)
|
||||
};
|
||||
writeln!(file, " ({}, {}),", key, &value).unwrap();
|
||||
smallest = std::cmp::min(smallest, word.len());
|
||||
|
|
|
@ -7,7 +7,22 @@ pub use varcon_core::CategorySet;
|
|||
|
||||
pub fn find(word: &'_ unicase::UniCase<&str>) -> Option<&'static [(u8, &'static VariantsMap)]> {
|
||||
VARS_DICTIONARY
|
||||
.binary_search_by_key(word, |(key, _)| *key)
|
||||
.binary_search_by_key(word, |(key, _)| key.convert())
|
||||
.map(|i| VARS_DICTIONARY[i].1)
|
||||
.ok()
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub(crate) enum EncodedStr {
|
||||
//Unicode(&'static str),
|
||||
Ascii(&'static str),
|
||||
}
|
||||
|
||||
impl EncodedStr {
|
||||
fn convert(self) -> unicase::UniCase<&'static str> {
|
||||
match self {
|
||||
//EncodedStr::Unicode(s) => unicase::UniCase::unicode(s),
|
||||
EncodedStr::Ascii(s) => unicase::UniCase::ascii(s),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue