顺便说一句,这是针对当前的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。但这只是一个例子。
那么,如何从借用的字符串中获取拥有的字符串呢?还是我完全误解了。
https://stackoverflow.com/questions/15379408
复制相似问题