VisitableGraph

Trait VisitableGraph 

Source
pub trait VisitableGraph {
    type GData;
    type NData: Clone;
    type EData: Clone;

Show 44 methods // Required methods fn data(&self) -> &Self::GData; fn node_data( &self, id: impl AsRef<NodeID>, ) -> Result<Cow<'static, Self::NData>>; fn edge_data( &self, id: impl AsRef<EdgeID>, ) -> Result<Cow<'static, Self::EData>>; fn is_empty(&self) -> bool; fn node_count(&self) -> usize; fn edge_count(&self) -> usize; fn all_nodes(&self) -> Nodes; fn all_edges(&self) -> Edges; fn has_node(&self, id: impl AsRef<NodeID>) -> bool; fn has_edge(&self, id: impl AsRef<EdgeID>) -> bool; fn has_edge_from_to( &self, source: impl AsRef<NodeID>, target: impl AsRef<NodeID>, ) -> bool; fn has_edge_between( &self, a: impl AsRef<NodeID>, b: impl AsRef<NodeID>, ) -> bool; fn source(&self, id: impl AsRef<EdgeID>) -> Result<NodeID>; fn target(&self, id: impl AsRef<EdgeID>) -> Result<NodeID>; fn endpoints(&self, id: impl AsRef<EdgeID>) -> Result<(NodeID, NodeID)>; fn out_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>; fn in_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>; fn incident_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>; fn out_degree(&self, id: impl AsRef<NodeID>) -> Result<usize>; fn in_degree(&self, id: impl AsRef<NodeID>) -> Result<usize>; fn degree(&self, id: impl AsRef<NodeID>) -> Result<usize>; fn successors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>; fn predecessors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>; fn neighbors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>; fn has_successors(&self, id: impl AsRef<NodeID>) -> Result<bool>; fn has_predecessors(&self, id: impl AsRef<NodeID>) -> Result<bool>; fn has_neighbors(&self, id: impl AsRef<NodeID>) -> Result<bool>; fn all_roots(&self) -> Nodes; fn all_leaves(&self) -> Nodes; fn non_roots(&self) -> Nodes; fn non_leaves(&self) -> Nodes; fn all_internals(&self) -> Nodes; fn is_leaf(&self, id: impl AsRef<NodeID>) -> Result<bool>; fn is_root(&self, id: impl AsRef<NodeID>) -> Result<bool>; fn is_internal(&self, id: impl AsRef<NodeID>) -> Result<bool>; // Provided methods fn elements(&self) -> Elements { ... } fn edges_from_to( &self, source: impl AsRef<NodeID>, target: impl AsRef<NodeID>, ) -> Result<Edges> { ... } fn edges_between( &self, a: impl AsRef<NodeID>, b: impl AsRef<NodeID>, ) -> Result<Edges> { ... } fn edges_from_to_nodes( &self, sources: &Nodes, targets: &Nodes, ) -> Result<Edges> { ... } fn edges_between_nodes(&self, a: &Nodes, b: &Nodes) -> Result<Edges> { ... } fn nodes_successors(&self, ids: &Nodes) -> Result<Nodes> { ... } fn nodes_predecessors(&self, ids: &Nodes) -> Result<Nodes> { ... } fn transitive_successors(&self, ids: &Nodes) -> Result<Nodes> { ... } fn transitive_predecessors(&self, ids: &Nodes) -> Result<Nodes> { ... }
}

Required Associated Types§

Required Methods§

Source

fn data(&self) -> &Self::GData

Returns a reference to the graph’s data.

Source

fn node_data(&self, id: impl AsRef<NodeID>) -> Result<Cow<'static, Self::NData>>

Returns a reference to the node’s data.

Source

fn edge_data(&self, id: impl AsRef<EdgeID>) -> Result<Cow<'static, Self::EData>>

Returns a reference to the edge’s data.

Source

fn is_empty(&self) -> bool

Returns true if the graph is empty.

Source

fn node_count(&self) -> usize

Returns the number of nodes in the graph.

Source

fn edge_count(&self) -> usize

Returns the number of edges in the graph.

Source

fn all_nodes(&self) -> Nodes

Returns a set of all nodes in the graph.

Source

fn all_edges(&self) -> Edges

Returns a set of all edges in the graph.

Source

fn has_node(&self, id: impl AsRef<NodeID>) -> bool

Returns true if the graph contains the given node.

Source

fn has_edge(&self, id: impl AsRef<EdgeID>) -> bool

Returns true if the graph contains the given edge.

Source

fn has_edge_from_to( &self, source: impl AsRef<NodeID>, target: impl AsRef<NodeID>, ) -> bool

Returns true if the graph contains an edge from source to target.

Source

fn has_edge_between(&self, a: impl AsRef<NodeID>, b: impl AsRef<NodeID>) -> bool

Returns true if the graph contains an edge between a and b, regardless of direction.

Source

fn source(&self, id: impl AsRef<EdgeID>) -> Result<NodeID>

Returns the source node of the edge.

Source

fn target(&self, id: impl AsRef<EdgeID>) -> Result<NodeID>

Returns the target node of the edge.

Source

fn endpoints(&self, id: impl AsRef<EdgeID>) -> Result<(NodeID, NodeID)>

Returns the endpoints of the edge.

Source

fn out_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>

Returns the out-edges of the node.

Source

fn in_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>

Returns the in-edges of the node.

Source

fn incident_edges(&self, id: impl AsRef<NodeID>) -> Result<Edges>

Returns the incident edges of the node.

Source

fn out_degree(&self, id: impl AsRef<NodeID>) -> Result<usize>

Returns the number of out-edges of the node.

Source

fn in_degree(&self, id: impl AsRef<NodeID>) -> Result<usize>

Returns the number of in-edges of the node.

Source

fn degree(&self, id: impl AsRef<NodeID>) -> Result<usize>

Returns the number of incident edges of the node.

Source

fn successors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>

Returns the immediate successors of the node.

Source

fn predecessors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>

Returns the immediate predecessors of the node.

Source

fn neighbors(&self, id: impl AsRef<NodeID>) -> Result<Nodes>

Returns the immediate neighbors of the node.

Source

fn has_successors(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node has successors.

Source

fn has_predecessors(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node has predecessors.

Source

fn has_neighbors(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node has neighbors.

Source

fn all_roots(&self) -> Nodes

The set of all “roots” (nodes with no predecessors) in the graph.

Source

fn all_leaves(&self) -> Nodes

The set of all “leaves” (nodes with no successors) in the graph.

Source

fn non_roots(&self) -> Nodes

The set of all nodes that are not roots (i.e., nodes with at least one predecessor).

Source

fn non_leaves(&self) -> Nodes

The set of all nodes that are not leaves (i.e., nodes with at least one successor).

Source

fn all_internals(&self) -> Nodes

The set of all nodes that are neither roots nor leaves (i.e., nodes with at least one predecessor and at least one successor).

Source

fn is_leaf(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node is a leaf (i.e., has no successors).

Source

fn is_root(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node is a root (i.e., has no predecessors).

Source

fn is_internal(&self, id: impl AsRef<NodeID>) -> Result<bool>

Returns true if the node is neither a root nor a leaf (i.e., has at least one predecessor and at least one successor).

Provided Methods§

Source

fn elements(&self) -> Elements

Returns the set of all elements in the graph.

Source

fn edges_from_to( &self, source: impl AsRef<NodeID>, target: impl AsRef<NodeID>, ) -> Result<Edges>

Returns the edges that have the given source and target nodes.

Only returns more than one edge in the case of codirected edges.

Source

fn edges_between( &self, a: impl AsRef<NodeID>, b: impl AsRef<NodeID>, ) -> Result<Edges>

Returns the edges that have the given nodes as endpoints.

Only returns more than one edge in the case of parallel edges.

Source

fn edges_from_to_nodes(&self, sources: &Nodes, targets: &Nodes) -> Result<Edges>

Returns the edges connecting the given source nodes to the given target nodes.

Source

fn edges_between_nodes(&self, a: &Nodes, b: &Nodes) -> Result<Edges>

Returns the edges connecting the given sets of nodes.

Source

fn nodes_successors(&self, ids: &Nodes) -> Result<Nodes>

Returns the immediate successors of all the given nodes.

Source

fn nodes_predecessors(&self, ids: &Nodes) -> Result<Nodes>

Returns the immediate predecessors of all the given nodes.

Source

fn transitive_successors(&self, ids: &Nodes) -> Result<Nodes>

Returns the transitive successors of all the given nodes (i.e., all the nodes reachable from the out-edges of the given nodes).

The given nodes will not be included unless they are also reachable from the out-edges of other nodes.

Source

fn transitive_predecessors(&self, ids: &Nodes) -> Result<Nodes>

Returns the transitive predecessors of all the given nodes (i.e., all the nodes reachable from the in-edges of the given nodes).

The given nodes will not be included unless they are also reachable from the in-edges of other nodes.

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§

Source§

impl<GData, NData, EData> VisitableGraph for Graph<GData, NData, EData>
where GData: Clone + 'static, NData: Clone + 'static, EData: Clone + 'static,

Source§

type GData = GData

Source§

type NData = NData

Source§

type EData = EData

Source§

impl<Inner> VisitableGraph for DAG<Inner>
where Inner: MutableGraph,

Source§

impl<Inner> VisitableGraph for Forest<Inner>
where Inner: VisitableGraph + MutableTree<GData = (), NData = (), EData = ()>,

Source§

impl<Inner> VisitableGraph for ReversedGraph<Inner>
where Inner: VisitableGraph,

Source§

impl<Inner> VisitableGraph for Tree<Inner>
where Inner: MutableGraph,

Source§

impl<InnerGraph, InnerForest> VisitableGraph for CompoundBase<InnerGraph, InnerForest>
where InnerGraph: MutableGraph, InnerForest: MutableForest<GData = (), NData = (), EData = ()>,

Source§

type GData = <InnerGraph as VisitableGraph>::GData

Source§

type NData = <InnerGraph as VisitableGraph>::NData

Source§

type EData = <InnerGraph as VisitableGraph>::EData