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§
Provided Methods§
Sourcefn subgraphs(&'a self) -> Subgraphs<'a, Self::Subgraph>
fn subgraphs(&'a self) -> Subgraphs<'a, Self::Subgraph>
Retuns all the subgraphs in this graph.
Sourcefn subgraph_nodes(&'a self, _s: &Self::Subgraph) -> Nodes<'a, Self::Node>
fn subgraph_nodes(&'a self, _s: &Self::Subgraph) -> Nodes<'a, Self::Node>
Retuns all the subgraphs in this graph.