GraphWalk

Trait GraphWalk 

Source
pub trait GraphWalk<'a> {
    type Node: Clone;
    type Edge: Clone;
    type Subgraph: Clone;

    // Required methods
    fn nodes(&'a self) -> Nodes<'a, Self::Node>;
    fn edges(&'a self) -> Edges<'a, Self::Edge>;
    fn source(&'a self, edge: &Self::Edge) -> Self::Node;
    fn target(&'a self, edge: &Self::Edge) -> Self::Node;

    // Provided methods
    fn subgraphs(&'a self) -> Subgraphs<'a, Self::Subgraph> { ... }
    fn subgraph_nodes(&'a self, _s: &Self::Subgraph) -> Nodes<'a, Self::Node> { ... }
}
Expand description

GraphWalk is an abstraction over a directed graph = (nodes,edges) made up of node handles N and edge handles E, where each E can be mapped to its source and target nodes.

The lifetime parameter 'a is exposed in this trait (rather than introduced as a generic parameter on each method declaration) so that a client impl can choose N and E that have substructure that is bound by the self lifetime 'a.

The nodes and edges method each return instantiations of Cow<[T]> to leave implementors the freedom to create entirely new vectors or to pass back slices into internally owned vectors.

Required Associated Types§

Required Methods§

Source

fn nodes(&'a self) -> Nodes<'a, Self::Node>

Returns all the nodes in this graph.

Source

fn edges(&'a self) -> Edges<'a, Self::Edge>

Returns all of the edges in this graph.

Source

fn source(&'a self, edge: &Self::Edge) -> Self::Node

The source node for edge.

Source

fn target(&'a self, edge: &Self::Edge) -> Self::Node

The target node for edge.

Provided Methods§

Source

fn subgraphs(&'a self) -> Subgraphs<'a, Self::Subgraph>

Retuns all the subgraphs in this graph.

Source

fn subgraph_nodes(&'a self, _s: &Self::Subgraph) -> Nodes<'a, Self::Node>

Retuns all the subgraphs in this graph.

Implementors§