我有一个检查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)
}
Run Code Online (Sandbox Code Playgroud)
让我困扰的是,我转换部分char来&str(&str是参数的类型is_match接受):
&ch.to_string()[..]
Run Code Online (Sandbox Code Playgroud)
能否更优雅,更有效地完成?
您可以使用代替使用正则表达式解决此问题char::is_whitespace。它应该具有相同的行为,并且可能会更有效,具体取决于编译器的优化。无论如何,不取决于regex板条箱是一种收益。
唯一真正的区别是char::is_whitespace需要self而不是&self。如果您担心这一点,请不要。自从实现以来,使用&charover char就没有任何收益。实际上,由于s是4个字节,因此直接传递字符通常比8个字节的指针更有效。而且这甚至都没有考虑到额外的间接层。charCopychar
如果您坚持使用现有方法,则可以简化为
use regex::Regex;
fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
re.is_match(&ch.to_string())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |