gpt4 book ai didi

rust - 在 0.10 中反转字符串

转载 作者:行者123 更新时间:2023-11-29 08:11:51 24 4
gpt4 key购买 nike

我在最新版本的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com