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!"));