【发布时间】:2013-03-01 00:56:29
【问题描述】:
顺便说一下,这是针对当前 0.6 Rust 主干的,不确定确切的提交。
假设我想对一些字符串进行 for 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。但这只是一个例子。
那么,如何从借来的字符串中获取拥有的字符串?还是我完全误解了。
【问题讨论】:
-
鉴于 Rust 是 1.X,现在这不太重要。 (Rust 1.X 使用
String和&str,而不是~str)因此,将其标记为 pre-Rust 1.0 会很有帮助。我希望搜索引擎的相关性可以相应调整。 -
我在这里可能不合时宜,但我已投票结束这个问题,因为它不适用于当前的 Rust 语法,其中不包括 ~
标签: string pointers rust rust-obsolete