Petgraph的all_simple_paths()函数需要什么类型注解?
Petgraph
all_simple_paths() 类型注解报错解决方案 报错原因
all_simple_paths() 返回的迭代器元素是满足 FromIterator<G::NodeId> 约束的任意集合类型,Rust 编译器无法自动推断你期望使用的具体集合类型,因此需要手动指定。
解决方案
推荐直接在函数调用时使用涡轮鱼语法 ::<> 指定集合类型,示例如下:
// 示例指定将路径节点存储为 Vec,NodeId 类型由编译器自动推导 for path in algo::all_simple_paths::<Vec<_>, _>(&graph, x, y, 0, None) { // 此处 path 的类型已明确为 Vec<你使用的节点ID类型>,可直接处理 }
如果你需要使用其他集合类型,只需替换尖括号内的 Vec<_> 即可,比如需要对路径节点去重可替换为 HashSet<_>。
如果你不想使用涡轮鱼语法,也可以在循环内对变量标注类型:
for path in algo::all_simple_paths(&graph, x, y, 0, None) { let path: Vec<NodeId> = path; // 后续处理逻辑 }
内容的提问来源于stack exchange,提问作者curiousdannii
相关产品推荐
相关产品推荐

