我有一个递归类型,它不实现复制
struct Node {
board: Board,
children: Option<Vec<Node>>,
}
我有一个这些 node 的向量,我想对每个 node 调用一个方法,然后将它们传递给另一个函数.
fn foo() {
let mut nodes: Vec<Node> = get_nodes();
for i in 0..nodes.len() {
nodes[i].grow();
}
pick_node(nodes);
}
这是可行的,但令人沮丧
fn foo() {
let nodes: Vec<Node> = get_nodes();
for mut node in nodes{
node.grow();
}
pick_node(nodes);
}
导致错误,因为"由于此隐式调用.into_iter()
而移动了options
"
有没有一个版本的for..这样我就可以依次引用向量的每个成员,而不需要移动或复制,就像我在第一个版本中使用的范围一样?这是我经常遇到的一个问题,出于某种原因,很难找到答案.正如克利比所说,迭代器可能更快、更清晰,而且看起来很习惯.