Trait 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§

Source

fn node_count(&self) -> usize

Source

fn nodes(&self) -> impl Iterator<Item = NodeID>

Source

fn node(&self, id: NodeID) -> Result<&Node<Self::NodeData>, GraphError>

Source

fn node_mut( &mut self, id: NodeID, ) -> Result<&mut Node<Self::NodeData>, GraphError>

Source

fn edge(&self, id: EdgeID) -> Result<&Edge<Self::EdgeData>, GraphError>

Source

fn edge_mut( &mut self, id: EdgeID, ) -> Result<&mut Edge<Self::EdgeData>, GraphError>

Source

fn add_node(&mut self, data: Self::NodeData) -> NodeID

Source

fn add_nodes(&mut self, data: &[Self::NodeData]) -> Vec<NodeID>
where Self::NodeData: Clone,

Source

fn add_edge(&mut self, from: NodeID, to: NodeID, data: Self::EdgeData) -> EdgeID

Source

fn remove_node(&mut self, id: NodeID) -> Result<(), GraphError>

Source

fn remove_edge(&mut self, id: EdgeID) -> Result<(), GraphError>

Source

fn add_edges(&mut self, data: &[(NodeID, NodeID)]) -> Vec<EdgeID>
where Self::EdgeData: Default + Clone, Self::NodeData: Clone,

Provided Methods§

Source

fn remove_nodes(&mut self, ids: &[NodeID]) -> Result<(), GraphError>

Source

fn add_edges_with_data( &mut self, data: &[(NodeID, NodeID, Self::EdgeData)], ) -> Vec<EdgeID>
where Self::EdgeData: Clone,

Source

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,

Source

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,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§