#不区分大小写 #哈希表 #字符串键 #大小写折叠 #API键 #unicase

case_insensitive_hashmap

使用不区分大小写的字符串作为键的HashMap

4个版本 (2个稳定版本)

1.0.1 2024年7月5日
1.0.0 2020年6月5日
0.9.1 2020年6月5日
0.9.0 2020年6月5日

文本处理中排名第167

Download history 181/week @ 2024-04-25 156/week @ 2024-05-02 210/week @ 2024-05-09 230/week @ 2024-05-16 190/week @ 2024-05-23 159/week @ 2024-05-30 180/week @ 2024-06-06 234/week @ 2024-06-13 240/week @ 2024-06-20 275/week @ 2024-06-27 247/week @ 2024-07-04 194/week @ 2024-07-11 401/week @ 2024-07-18 880/week @ 2024-07-25 272/week @ 2024-08-01 207/week @ 2024-08-08

每月下载量1,808
用于 3 crates

MIT授权

23KB
484 代码行

CaseInsensitiveHashMap

std::collections::HashMap的包装,使用不区分大小写的字符串作为键。

由于这是一个标准HashMap的简单包装,请参阅其文档以获取更多信息。

CaseInsensitiveHashMap的键类型始终是UniCase<String>。大多数具有键参数的方法都有一个约束<K: Into<Key>>。这意味着你可以用String&strUniCase<String>调用它们(如果你已经有了),这使得API比直接在你的std::collections::HashMap中将UniCase<String>用作键类型更易于使用。

示例

use unicase::UniCase;
use case_insensitive_hashmap::CaseInsensitiveHashMap;

let mut map = CaseInsensitiveHashMap::new();
map.insert("a", 20);
map.insert("B".to_string(), 40);

// All these are valid key forms.
assert!(map.contains_key("A"));
assert!(map.contains_key("A".to_string()));
let uc = UniCase::new("A".to_string());
assert!(map.contains_key(uc));

// Lookup of values is case-insensitive.
assert_eq!(map.get("a"), Some(&20));
assert_eq!(map.get("A"), Some(&20));

assert_eq!(map["a"], 20);
assert_eq!(map["A"], 20);

实现

这使用了UniCase crate来处理不区分大小写。用作键的字符串被包装在UniCase对象中,以便它们以不区分大小写的方式进行哈希和比较。

发行说明

  • 1.0.1 - 将UniCase版本提升到2.7.0。

依赖项

~95KB