I'm using petgraph. I have a NodeIndex
and I want to access to the data associated to the node.
Index<NodeIndex<Ix>>
is implemented for Graph
.
I thought I would be able to do:
let my_graph: UnGraph<GraphNodeData, GraphEdgeData> = /* ... */;
let my_index: NodeIndex = /* ... */;
let data: GraphNodeData = my_graph[my_index];
But I got the following error:
error[E0608]: cannot index into a value of type `&local_graph::LocalGraph`
It look like I need to import a trait. To get some help from the compiler I changed the code to:
let data = my_graph.index(my_index);
And got the following error:
error[E0599]: no method named `index` found for reference `&local_graph::LocalGraph` in the current scope
--> lib/tour_generation/src/local_graph.rs:128:14
|
128 | my_graph.index(my_index)
| ^^^^^ method not found in `&local_graph::LocalGraph`
|
= help: items from traits can only be used if the trait is implemented and in scope
= note: the following traits define an item `index`, perhaps you need to implement one of them:
candidate #1: `std::ops::Index`
candidate #2: `std::slice::SliceIndex`
candidate #3: `nalgebra::base::indexing::MatrixIndex`
candidate #4: `petgraph::graph_impl::IndexType`
candidate #5: `petgraph::graph_impl::GraphIndex`
candidate #6: `object::read::traits::ObjectSection`
I took a look at the implementation of the trait Index<NodeIndex<_>> for Graph<...>
, it was done in the graph_impl
module that isn't re-exported publicly. Does this means that I can't use my_graph[my_index]
?