pub trait FiniteGraphRef<'a>: GraphTypeRef<'a> {
    type NodeIt: GraphIterator<Self, Item = Self::Node>;
    type EdgeIt: GraphIterator<Self, Item = Self::Edge>;

    // Required methods
    fn num_nodes(&self) -> usize;
    fn nodes_iter(&self) -> Self::NodeIt;
    fn num_edges(&self) -> usize;
    fn edges_iter(&self) -> Self::EdgeIt;
    fn enodes(&self, e: Self::Edge) -> (Self::Node, Self::Node);

    // Provided methods
    fn nodes(&self) -> GraphIter<'_, Self, Self::NodeIt> 
       where Self: Sized { ... }
    fn edges(&self) -> GraphIter<'_, Self, Self::EdgeIt> 
       where Self: Sized { ... }
}
Expand description

A reference to a basic finite graph.

This trait contains methods with a unrestricted lifetime for self.

Required Associated Types§

source

type NodeIt: GraphIterator<Self, Item = Self::Node>

Type of an iterator over all nodes.

source

type EdgeIt: GraphIterator<Self, Item = Self::Edge>

Type of an iterator over all edges.

Required Methods§

source

fn num_nodes(&self) -> usize

Return the number of nodes in the graph.

source

fn nodes_iter(&self) -> Self::NodeIt

Return a graph iterator over all nodes.

source

fn num_edges(&self) -> usize

Return the number of edges in the graph.

source

fn edges_iter(&self) -> Self::EdgeIt

Return a graph iterator over all edges.

This iterator traverses only the forward edges.

source

fn enodes(&self, e: Self::Edge) -> (Self::Node, Self::Node)

Return the nodes connected by an edge.

The order of the nodes is undefined.

Provided Methods§

source

fn nodes(&self) -> GraphIter<'_, Self, Self::NodeIt> where Self: Sized,

Return an iterator over all nodes.

source

fn edges(&self) -> GraphIter<'_, Self, Self::EdgeIt> where Self: Sized,

Return an iterator over all edges.

This iterator traverses only the forward edges.

Implementations on Foreign Types§

source§

impl<'a, G> FiniteGraphRef<'a> for &'a Gwhere G: FiniteGraph,

§

type NodeIt = WrapIt<<G as FiniteGraph>::NodeIt<'a>>

§

type EdgeIt = WrapIt<<G as FiniteGraph>::EdgeIt<'a>>

source§

fn num_nodes(&self) -> usize

source§

fn nodes_iter(&self) -> Self::NodeIt

source§

fn num_edges(&self) -> usize

source§

fn edges_iter(&self) -> Self::EdgeIt

source§

fn enodes(&self, e: Self::Edge) -> (Self::Node, Self::Node)

source§

impl<'a, G> FiniteGraphRef<'a> for NonNull<G>where G: FiniteGraph + 'a,

§

type NodeIt = WrapIt<<G as FiniteGraph>::NodeIt<'a>>

§

type EdgeIt = WrapIt<<G as FiniteGraph>::EdgeIt<'a>>

source§

fn num_nodes(&self) -> usize

source§

fn nodes_iter(&self) -> Self::NodeIt

source§

fn num_edges(&self) -> usize

source§

fn edges_iter(&self) -> Self::EdgeIt

source§

fn enodes(&self, e: Self::Edge) -> (Self::Node, Self::Node)

Implementors§

source§

impl<'a, G> FiniteGraphRef<'a> for Network<'a, G>where G: FiniteGraph,

source§

impl<'a, G> FiniteGraphRef<'a> for ReverseDigraph<'a, G>where G: FiniteGraphRef<'a>,

§

type NodeIt = ReverseWrapIt<<G as FiniteGraphRef<'a>>::NodeIt>

§

type EdgeIt = ReverseWrapIt<<G as FiniteGraphRef<'a>>::EdgeIt>