Это может не относиться к Rust, хотя это язык, на котором я сейчас сосредоточен.
Я пишу функцию для синтаксического анализа языка (MySQL) в токенах и вывода их в отформатированном виде.и часть этого включает в себя поиск текущего рабочего токена, чтобы определить, является ли оно именем, функцией или именем столбца / таблицы.
В настоящее время я использую оператор сопоставления, например
* 1006.*
Фактический список намного, намного длиннее.
Это лучший способ сделать это?Я пытался использовать HashMap
также с .contains_key()
, но это было заметно медленнее
Моя HashMap
реализация выглядит так:
use std::collections::HashMap;
lazy_static! {
static ref words: HashMap<&'static str, u8> = hashmap!{
"accessible" => 0,
"account" => 0,
"action" => 0,
"active" => 0,
"add" => 0,
// ...
"year" => 0,
"year_month" => 0,
"zerofill" => 0,
};
}
pub fn is_word(word: &str) -> bool {
words.contains_key(word)
}