pub trait GraphWalk<'a> {
type Node: Clone;
type Edge: 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;
}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§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".