我有一个petgraph::Graph
结构,我通过赋予每个节点权重 a 来强加一个树结构,parent_edge_idx
这是Option<EdgeIdx>
从其父节点连接到自身的边的一个。
我需要遍历一个节点的孩子。我需要连接边的边权重和子节点的权重。
我想将该迭代分解为一个辅助函数,该函数返回对Iterator<Item = (EdgeIdx, NodeIdx)>
. 我想免费做这个;因为我必须借用self.search_tree
才能做到这一点,所以迭代器仅在self
.
- 这是要编写的合理函数吗?
- 这个函数可以写吗?
任何门控功能都可以;我在夜间。
fn children<'a>(
&'a mut self,
node_idx: NodeIdx,
) -> &'a impl Iterator<Item = (EdgeIdx, NodeIdx)> {
&self.search_tree.neighbors(node_idx).map(|child_idx| {
let node = self.search_tree.node_weight(child_idx).unwrap();
let edge_idx = node.parent_edge_idx.unwrap();
(edge_idx, child_idx)
})
}