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

    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;
}
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§

Returns all the nodes in this graph.

Returns all of the edges in this graph.

The source node for edge.

The target node for edge.

Implementors§