我刚接触 Rust,遇到了几次类似以下问题的困扰:
fn main() {
let mut as_str: Vec<&String> = Vec::new();
for i in [1, 2, 3, 4, 5].iter() {
let i_str = i.to_string();
as_str.push(&i_str);
}
}
这将导致以下错误:
<anon>:6:22: 6:27 error: `i_str` does not live long enough
<anon>:6 as_str.push(&i_str);
^~~~~
如何将字符串的所有权转移给向量(不想复制)?我需要生命周期吗?应该是str还是String(假设我不想在向量中变异项本身)?
let as_str: Vec<_> = (1..6).map(|i| i.to_string()).collect()
是另一种实现 OP 所需求的方法。 - Akavall