string - 我如何在 Rust 中将 &str 转换为 ~str?

标签 string pointers rust rust-obsolete

顺便说一句,这是针对当前 0.6 Rust 主干的,不确定确切的提交。

假设我想对一些字符串执行 each 操作,而我的闭包采用借用的字符串指针参数 (&str)。我希望我的闭包将其参数添加到要返回的拥有字符串 ~[~str] 的拥有向量中。我对 Rust 的理解很薄弱,但我认为字符串是一种特殊情况,您不能用 * 取消引用它们,对吧?如何将字符串从 &str 获取到采用 ~str 的向量的 push 方法中?

下面是一些无法编译的代码

fn read_all_lines() -> ~[~str] {
    let mut result = ~[];
    let reader = io::stdin();
    let util = @reader as @io::ReaderUtil;
    for util.each_line |line| {
        result.push(line);
    }
    result
}

它无法编译,因为它推断结果的类型为 [&str],因为这就是我要插入的。更不用说它的生命周期是错误的,因为我向它添加了一个生命周期较短的变量。

我意识到我可以使用 ReaderUtil 的 read_line() 方法,它返回一个 ~str。但这只是一个例子。

那么,如何从借用的字符串中获取自己的字符串呢?还是我完全误解了。

最佳答案

您应该调用 StrSlice 特征的方法 to_owned,如下所示:

fn read_all_lines() -> ~[~str] {
    let mut result = ~[];
    let reader = io::stdin();
    let util = @reader as @io::ReaderUtil;
    for util.each_line |line| {
        result.push(line.to_owned());
    }
    result
}

StrSlice 特征文档在这里:

http://static.rust-lang.org/doc/core/str.html#trait-strslice

关于string - 我如何在 Rust 中将 &str 转换为 ~str?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15379408/

相关文章:

c - C 中查找元音计数的字符串

generics - 创建由通用NewType索引的通用结构

ruby - 安装 gem 时如何构建 Rust 库?

ruby-on-rails - 订阅!干净的字符串,去掉撇号

c - C 中的反转字符串函数

linux - 如何让 grep 将任何字符视为常规字符

c - 打印指针指向的地址,地址指向的值,以及指针本身的地址

c - 将小数据存储在 C 的指针中?

pointers - Go 使用指针接收者调用函数的语法

rust - 如何通过Rust's Cargo中的集成测试访问二进制文件的功能