6 个版本 (3 个破坏性更新)
0.4.0 | 2022年7月27日 |
---|---|
0.3.3 | 2021年12月6日 |
0.3.2 | 2021年7月10日 |
0.3.0 | 2021年1月10日 |
0.1.0 | 2020年9月28日 |
#589 in 文本处理
23,517 每月下载量
用于 26 个 crate (3 个直接使用)
19KB
302 行
允许在需要字符串比较的地方使用正则表达式或字符串。
示例
使用泛型/单态化
此模式更快,但生成的代码更多,二进制文件略大。
如果没有特定偏好,建议选择此选项,因为代码通常更易于编写。
fn accept_needle<N>(needle: N) -> bool
where
N: Needle,
{
needle.is_match("Test")
}
现在所有以下操作都将生效
accept_needle("Test");
accept_needle(String::from("Test"));
accept_needle(Regex::new("Test").unwrap());
accept_needle(Regex::new(r"^T.+t$").unwrap());
对于字符串比较,您还可以使用 StringMatch
,这允许您更明确地进行比较
accept_needle(StringMatch::from("test").case_insensitive());
accept_needle(StringMatch::from("tes").partial());
默认情况下,StringMatch
匹配整个字符串,并且区分大小写(默认为安全模式)。
最后,还有为 String
和 &str
accept_needle("test".match_case_insensitive());
accept_needle("tes".match_partial());
使用动态分发
此模式略慢,但生成的代码较少,二进制文件略小。
fn accept_needle(needle: &dyn Needle) -> bool
{
needle.is_match("Test")
}
现在所有以下操作都将生效
accept_needle(&"Test");
accept_needle(&String::from("Test"));
accept_needle(&Regex::new("Test").unwrap());
accept_needle(&Regex::new(r"^T.+t$").unwrap());
accept_needle(&StringMatch::from("test").case_insensitive());
accept_needle(&StringMatch::from("tes").partial());
许可证
此作品根据 MIT 许可证授权。
SPDX-许可证-标识符: MIT
依赖项
~2.2–3.5MB
~57K SLoC