我有以下代码:
struct Node {
id: uint
}
struct Graph {
nodes: Vec<Node>
}
impl Graph {
fn new() -> Graph {
return Graph { nodes: Vec::new() };
}
fn create_node(&mut self) -> &Node {
let index = self.nodes.len();
let node = Node { id: index };
self.nodes.push(node);
// return &node; // error: `node` does not live long enough
return &self.nodes[index]; // ...but this work fine
}
}
这个想法是图创建一个新节点并将其“借给”给调用该方法的人。但我不知道如何返回对新创建结构的引用。第二次返回工作正常,但显然无效。
如何在不从向量中取回节点的情况下返回节点?