3个稳定版本
| 2.1.0 | 2020年4月10日 |
|---|---|
| 2.0.0 | 2020年3月31日 |
| 1.0.0 | 2020年2月18日 |
#28 在 #不区分大小写
每月 23 次下载
在 ellidri 中使用
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!"));