Rust 有没有比将字符转换为字符串更好的方法来测试字符是否为空白?
我有一个函数可以检查Rust 有没有比将字符转换为字符串更好的方法来测试字符是否为空白?,rust,char,slice,Rust,Char,Slice,我有一个函数可以检查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是所接受的参数类型): 可以更优雅、更高效地完成吗?您可以使用正则表达式来解决此问题,而不是使用正则
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
是所接受的参数类型):
可以更优雅、更高效地完成吗?您可以使用正则表达式来解决此问题,而不是使用正则表达式。它应该具有相同的行为,并且可能更高效,这取决于编译器的优化。在任何情况下,不依赖于regex
板条箱都是一种收益
唯一真正的区别是char::is_whitespace
采用self
而不是&self
。如果你担心那件事,别担心。在char
上使用&char
没有任何好处,因为char
实现了Copy
。事实上,由于char
s是4个字节,因此直接传递字符通常比直接传递8个字节的指针更有效。这甚至没有考虑到额外的间接层
如果你坚持使用你现有的方法,它可以简化为
use regex::Regex;
fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
re.is_match(&ch.to_string())
}
use regex::Regex;
fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
re.is_match(&ch.to_string())
}