【发布时间】:2019-08-29 14:46:07
【问题描述】:
Rust 新手在这里。我正在尝试编写一个函数,该函数使用传递的向量,对其进行修改,将其附加到另一个向量并返回它。
这是我的代码:
fn try(other: Vec<(String, String)>) -> Vec<(String, String)> {
let mut res = Vec::new();
let mut neg: Vec<(String,String)> = other
.iter()
.map(|t| (t.0, String::from("abc")))
.collect();
res.append(&mut neg);
res
}
但是,我在t.0 收到了cannot move out borrowed content。我做错了什么?什么被传递到闭包中?
【问题讨论】:
-
.iter()返回一个迭代器,指向向量中每个元素的引用。你似乎想要into_iter()。 -
res有什么意义?为什么不直接返回neg? -
@E_net4 我不会把这个问题称为重复问题。您链接的那个问题只会问您是否已经知道应该在此处使用
into_iter。不过,这个问题的答案非常相关。 (另外,这里最好的解决方案其实是根本不使用into_iter,而只是修改原始向量并返回。) -
@M-ou-se 这是选择重复目标时真正重要的答案。重复的问题并不意味着目标问题完全相同,但它的答案也解决了该问题。至于它是否是一个好的重复目标,我将把决定权留给剩下的选民。
-
非常感谢。我同意cmets。问题是要知道在这种情况下要使用 into_iter。
标签: rust borrow-checker