Trait fast_graph::GraphInterface 
source · pub trait GraphInterface {
    type NodeData;
    type EdgeData;
Show 16 methods
    // Required methods
    fn node_count(&self) -> usize;
    fn nodes(&self) -> impl Iterator<Item = NodeID>;
    fn node(&self, id: NodeID) -> Result<&Node<Self::NodeData>, GraphError>;
    fn node_mut(
        &mut self,
        id: NodeID
    ) -> Result<&mut Node<Self::NodeData>, GraphError>;
    fn edge(&self, id: EdgeID) -> Result<&Edge<Self::EdgeData>, GraphError>;
    fn edge_mut(
        &mut self,
        id: EdgeID
    ) -> Result<&mut Edge<Self::EdgeData>, GraphError>;
    fn add_node(&mut self, data: Self::NodeData) -> NodeID;
    fn add_nodes(&mut self, data: &[Self::NodeData]) -> Vec<NodeID>
       where Self::NodeData: Clone;
    fn add_edge(
        &mut self,
        from: NodeID,
        to: NodeID,
        data: Self::EdgeData
    ) -> EdgeID;
    fn remove_node(&mut self, id: NodeID) -> Result<(), GraphError>;
    fn remove_edge(&mut self, id: EdgeID) -> Result<(), GraphError>;
    fn add_edges(&mut self, data: &[(NodeID, NodeID)]) -> Vec<EdgeID>
       where Self::EdgeData: Default + Clone,
             Self::NodeData: Clone;
    // Provided methods
    fn remove_nodes(&mut self, ids: &[NodeID]) -> Result<(), GraphError> { ... }
    fn add_edges_with_data(
        &mut self,
        data: &[(NodeID, NodeID, Self::EdgeData)]
    ) -> Vec<EdgeID>
       where Self::EdgeData: Clone { ... }
    fn add_nodes_and_edges(
        &mut self,
        data: Vec<(Self::NodeData, Vec<NodeID>)>
    ) -> (Vec<NodeID>, Vec<EdgeID>)
       where Self::EdgeData: Default + Clone,
             Self::NodeData: Default + Clone { ... }
    fn add_nodes_and_edges_with_data(
        &mut self,
        node_data: Vec<(Self::NodeData, Vec<(NodeID, Self::EdgeData)>)>
    ) -> (Vec<NodeID>, Vec<EdgeID>)
       where Self::NodeData: Default + Clone,
             Self::EdgeData: Clone { ... }
}Expand description
GraphInterface is a trait for basic “read and write” operations on a graph; core operations needed to change a graph and some derived helper functions.
Required Associated Types§
Required Methods§
fn node_count(&self) -> usize
fn nodes(&self) -> impl Iterator<Item = NodeID>
fn node(&self, id: NodeID) -> Result<&Node<Self::NodeData>, GraphError>
fn node_mut( &mut self, id: NodeID ) -> Result<&mut Node<Self::NodeData>, GraphError>
fn edge(&self, id: EdgeID) -> Result<&Edge<Self::EdgeData>, GraphError>
fn edge_mut( &mut self, id: EdgeID ) -> Result<&mut Edge<Self::EdgeData>, GraphError>
fn add_node(&mut self, data: Self::NodeData) -> NodeID
fn add_nodes(&mut self, data: &[Self::NodeData]) -> Vec<NodeID>
fn add_edge(&mut self, from: NodeID, to: NodeID, data: Self::EdgeData) -> EdgeID
fn remove_node(&mut self, id: NodeID) -> Result<(), GraphError>
fn remove_edge(&mut self, id: EdgeID) -> Result<(), GraphError>
fn add_edges(&mut self, data: &[(NodeID, NodeID)]) -> Vec<EdgeID>
Provided Methods§
fn remove_nodes(&mut self, ids: &[NodeID]) -> Result<(), GraphError>
fn add_edges_with_data( &mut self, data: &[(NodeID, NodeID, Self::EdgeData)] ) -> Vec<EdgeID>
fn add_nodes_and_edges( &mut self, data: Vec<(Self::NodeData, Vec<NodeID>)> ) -> (Vec<NodeID>, Vec<EdgeID>)
fn add_nodes_and_edges_with_data( &mut self, node_data: Vec<(Self::NodeData, Vec<(NodeID, Self::EdgeData)>)> ) -> (Vec<NodeID>, Vec<EdgeID>)
Object Safety§
This trait is not object safe.