顺便说一句,这是针对当前的0.6Rust 主干的,不确定确切的提交时间.
假设我想在一些字符串上 for each 字符串指定一个参数,我的闭包采用一个borrow 的字符串指针参数(&;str).我希望我的闭包将其参数添加到要返回的所有字符串~[~str]的所有向量中.我对Rust 的理解很弱,但我认为字符串是一种特殊情况,不能用*go 引用它们,对吗?如何从&;str转换为向量的push方法,该方法采用~str?
下面是一些无法编译的代码
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.但这只是一个例子.
那么,如何从借来的字符串中获得一个自有字符串呢?还是我完全误解了.