作者:RvJ手机用户2997047695f | 来源:互联网 | 2022-10-09 23:00
我有一个检查a char
是否为空格的函数:
fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
let slice = &ch.to_string()[..];
re.is_match(slice)
}
让我困扰的是,我转换部分char
来&str
(&str
是参数的类型is_match
接受):
&ch.to_string()[..]
能否更优雅,更有效地完成?
1> SCappella..:
您可以使用代替使用正则表达式解决此问题char::is_whitespace
。它应该具有相同的行为,并且可能会更有效,具体取决于编译器的优化。无论如何,不取决于regex
板条箱是一种收益。
唯一真正的区别是char::is_whitespace
需要self
而不是&self
。如果您担心这一点,请不要。自从实现以来,使用&char
over char
就没有任何收益。实际上,由于s是4个字节,因此直接传递字符通常比8个字节的指针更有效。而且这甚至都没有考虑到额外的间接层。char
Copy
char
如果您坚持使用现有方法,则可以简化为
use regex::Regex;
fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
re.is_match(&ch.to_string())
}
(操场)