# Trait rustc_graphviz::GraphWalk

source ·

    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§

source

#### type Node: Clone

source

#### type Edge: Clone

## 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`.

## Implementors§