在Rust的petgraph包中,有没有一种方法可以通过节点的权重来查找节点?

f0ofjuux  于 2024-01-08  发布在  其他
关注(0)|答案(1)|浏览(125)

我有一个使用Rust的petgraph crate定义的图。节点的权重类型是String,表示节点的“名称”。有没有一种方法可以只知道节点的权重(即名称)来获得节点索引?crate的文档似乎没有提供任何这样的功能。
或者我需要自己维护一个名称到索引的Map吗?

qybjjes1

qybjjes11#

我刚刚遇到了同样的问题。我想出了一个(不是很漂亮,但功能)解决方案:

  1. let p_node = if let Some(idx) = graph.raw_nodes().iter().position(|x| x.weight == p)
  2. {
  3. NodeIndex::new(idx)
  4. } else {
  5. graph.add_node(p)
  6. };

字符串
如果你有很多节点,最好保留你自己的HashMap,但这对我来说已经足够了。

相关问题