是否有可能与自定义相等操作符进行模式匹配?



我正在学习Rust,我想知道是否有可能使用以下代码:

match letter.to_lowercase().as_str() {
"a" => 5,
"n" => 13,
// And so on...
_   => 0,
}

并使用String::eq_ignore_ascii_case作为相等操作符,如下面的伪代码所示:

match letter with letter.eq_ignore_ascii_case as operator {
"a" => 5,
"n" => 13,
// And so on...
_   => 0,
}

这能做到吗?如果有,怎么做?

短答案,没有除非您编写自己的类型包装器,该包装器实际上使规范化输入你需要的东西

你能做的是匹配to_ascii_lowercase:

match letter.to_ascii_lowercase().as_str() {
"a" => 5,
"n" => 13,
// And so on...
_   => 0,
}

From theeq_ignore_ascii_case:

检查两个字符串是否为ASCII不区分大小写的匹配。与to_ascii_lowercase(a) == to_ascii_lowercase(b)相同,但没有分配和复制临时值。

最新更新