Trait rustc_ap_rustc_graphviz::GraphWalk [−][src]
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.