#比较 #不区分大小写 #ascii #字符串 #字节 #映射 #ellidri

ellidri-unicase

为ellidri实现不区分大小写的字符串比较

3个稳定版本

2.1.0 2020年4月10日
2.0.0 2020年3月31日
1.0.0 2020年2月18日

#28#不区分大小写

每月 23 次下载
ellidri 中使用

ISC 许可证

8KB
131

ellidri-unicase

str的包装器,使其比较不区分大小写。

用于 ellidri


lib.rs:

str的包装器,使其比较不区分大小写。

用于在 HashMap 中使用。实际上由ellidri的 State 使用。目前不支持Unicode大小写折叠。

包装器命名为 UniCase。它实现了特质,使得 &UniCase<str> 的行为类似于 &str,而 UniCase<String> 的行为类似于 String,当然,比较是不区分大小写的。

"不区分大小写" 由 CaseMapping 特质定义。此特质定义了字符和字节应该如何匹配。目前,以下大小写映射可用

  • Ascii(默认):匹配ASCII小写字母及其ASCII大写对应字母,
  • Rfc1459:与 Ascii 相同,但也匹配 {}|^[]\~
  • Rfc1459Strict:与 Ascii 相同,但也匹配 {}|[]\

目前,尚未实现 rfc7613

用法

use ellidri_unicase::{u, UniCase};
use std::collections::HashSet;

let mut channels = HashSet::new();
channels.insert(UniCase::new("#Games".to_owned()));

assert!(channels.contains(u("#gameS")));
assert!(!channels.contains(u("#Gaming")));

assert_eq!(u("hello!"), u("HELLO!"));

无运行时依赖