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())
}