我在最新版本的 Rust 中反转字符串时遇到问题,我看到了 this发布,但我仍然遇到一些错误。我正在尝试反转一个字符串并在没有任何运气的情况下比较两者:
fn is_palindromic(num: int) -> bool {
let num_str = num.to_str();
let rev_num_str = num_str.chars_rev().collect();
if rev_num_str == num_str {
return true;
}else{
return false;
}
}
然后我收到错误:
main.rs:8:28: 8:39 error: type `collections::string::String` does not implement
any method in scope named `chars_rev`
main.rs:8 let rev_num_str = num_str.chars_rev();
最佳答案
许多传统上有用的字符串方法都在 std::str::StrSlice 中定义特征。要从 String
值中获取切片,您可以调用 as_slice方法。看起来 chars_rev
不再在 StrSlice
特征中定义,但是有一个 chars
方法返回一个迭代器 Chars .
这个特定的迭代器实现了 DoubleEndedIterator trait,这意味着它可以通过调用 rev
来反转。这应该是你所需要的:
fn is_palindromic(num: int) -> bool {
let num_str = num.to_str();
let rev_num_str: String = num_str.as_slice().chars().rev().collect();
return rev_num_str == num_str;
}
fn main() {
println!("{}", is_palindromic(12321));
}
请注意,我还向 rev_num_str
添加了类型注释,因为编译器无法推断其具体类型(collect
是多态的,可以构建 many different kinds of "container" values )。您也可以具体实例化 collect
:
let rev_num_str = num_str.as_slice().chars().rev().collect::<String>();
关于rust - 在 0.10 中反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112920/