rust - 在 0.10 中反转字符串

标签 rust

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

相关文章:

rust - 堆栈溢出堆缓冲区?

rust - Tokio 任务可以优雅地终止整个运行时吗?

c - 编译 C 程序时无法链接到 Rust 编译的库

rust - 如何声明和实现一个跟踪结构集合的结构?

rust - SFML 中的生命周期说明符和泛型

service - 如何使RUST在后台正常运行并守护进程?

rust - 如何修复由于 RFC 1214 导致的生命周期错误

rust - 如何创建一个实现 Fn 并可以克隆到不同对象的特征对象?

null - 在 Rust 函数中返回 Null

websocket - 在同一端口上运行 websocket 和 http 服务器(Rust、hyper)