pub struct MapGraph<NodeKey: Hash + Eq + Clone, NodeData: Clone, EdgeKey: Hash + Eq + Clone, EdgeData: Clone> { /* private fields */ }Expand description
A directed graph that also maintains an arbitrary key-node and key-edge mapping
See module docs for more information
Implementations§
Source§impl<NodeKey: Hash + Eq + Clone, NodeData: Clone, EdgeKey: Hash + Eq + Clone, EdgeData: Clone> MapGraph<NodeKey, NodeData, EdgeKey, EdgeData>
impl<NodeKey: Hash + Eq + Clone, NodeData: Clone, EdgeKey: Hash + Eq + Clone, EdgeData: Clone> MapGraph<NodeKey, NodeData, EdgeKey, EdgeData>
Sourcepub fn insert_node(
&mut self,
key: NodeKey,
data: NodeData,
) -> Result<NodeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>, KeyAlreadyExists<NodeKey>>
pub fn insert_node( &mut self, key: NodeKey, data: NodeData, ) -> Result<NodeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>, KeyAlreadyExists<NodeKey>>
Insert a node with the specified key and data
Returns a mutable reference to the new node
Sourcepub fn get_node(
&self,
key: &NodeKey,
) -> Option<NodeRef<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
pub fn get_node( &self, key: &NodeKey, ) -> Option<NodeRef<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
Get a reference to the node with the specified key.
Returns None if there is no such node
Sourcepub fn get_node_mut(
&mut self,
key: &NodeKey,
) -> Option<NodeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
pub fn get_node_mut( &mut self, key: &NodeKey, ) -> Option<NodeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
Get a mutable reference to a node with the specified key
Returns None if there is no such node
Sourcepub fn iter_nodes(&self) -> GraphNodes<'_, NodeKey, NodeData, EdgeKey, EdgeData>
pub fn iter_nodes(&self) -> GraphNodes<'_, NodeKey, NodeData, EdgeKey, EdgeData>
Iterate over all nodes in the graph
Order is unspecified
Sourcepub fn insert_edge(
&mut self,
from: NodeKey,
to: NodeKey,
key: EdgeKey,
data: EdgeData,
) -> Result<EdgeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>, InsertEdgeError<NodeKey, EdgeKey>>
pub fn insert_edge( &mut self, from: NodeKey, to: NodeKey, key: EdgeKey, data: EdgeData, ) -> Result<EdgeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>, InsertEdgeError<NodeKey, EdgeKey>>
Insert a new edge between the specified nodes, with the specified key and data
Sourcepub fn get_edge(
&self,
key: &EdgeKey,
) -> Option<EdgeRef<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
pub fn get_edge( &self, key: &EdgeKey, ) -> Option<EdgeRef<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
Get a reference to the edge with the specified key
Returns None if there is no such edge
Sourcepub fn get_edge_mut(
&mut self,
key: &EdgeKey,
) -> Option<EdgeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
pub fn get_edge_mut( &mut self, key: &EdgeKey, ) -> Option<EdgeMut<'_, NodeKey, NodeData, EdgeKey, EdgeData>>
Get a mutable reference to the edge with the specified key
Returns None if there is no such edge
Sourcepub fn iter_edges(&self) -> GraphEdges<'_, NodeKey, NodeData, EdgeKey, EdgeData> ⓘ
pub fn iter_edges(&self) -> GraphEdges<'_, NodeKey, NodeData, EdgeKey, EdgeData> ⓘ
Iterate over all edges in the graph
Order is unspecified