pub trait FiniteGraph: GraphType {
    type NodeIt<'a>: GraphIterator<Self, Item = Self::Node<'a>>
       where Self: 'a;
    type EdgeIt<'a>: GraphIterator<Self, Item = Self::Edge<'a>>
       where Self: 'a;

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

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

A (finite) graph with a known number of nodes and edges.

Finite graphs also provide access to the list of all nodes and edges.

Required Associated Types§

source

type NodeIt<'a>: GraphIterator<Self, Item = Self::Node<'a>> where Self: 'a

Type of an iterator over all nodes.

source

type EdgeIt<'a>: GraphIterator<Self, Item = Self::Edge<'a>> where Self: 'a

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 num_edges(&self) -> usize

Return the number of edges in the graph.

source

fn nodes_iter(&self) -> Self::NodeIt<'_>

Return a graph iterator over all nodes.

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) -> NodeIterator<'_, Self>where Self: Sized,

Return an iterator over all nodes.

source

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

Return an iterator over all edges.

This iterator traverses only the forward edges.

Implementations on Foreign Types§

source§

impl<G> FiniteGraph for Rc<G>where G: FiniteGraph,

§

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

§

type EdgeIt<'a> = WrapIt<<G as FiniteGraph>::EdgeIt<'a>> where G: '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<'g, G> FiniteGraph for &'g Gwhere G: FiniteGraph,

§

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

§

type EdgeIt<'a> = WrapIt<<G as FiniteGraph>::EdgeIt<'a>> where G: 'a, 'g: '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<'g, G> FiniteGraph for Network<'g, G>where G: FiniteGraph,

§

type NodeIt<'a> = NetworkNodeIt<<G as FiniteGraph>::NodeIt<'a>> where G: 'a, 'g: 'a

§

type EdgeIt<'a> = NetworkEdgeIt<G, <G as FiniteGraph>::EdgeIt<'a>> where G: 'a, 'g: 'a

source§

impl<'g, G> FiniteGraph for ReverseDigraph<'g, G>where G: FiniteGraph,

§

type NodeIt<'a> = ReverseWrapIt<<G as FiniteGraph>::NodeIt<'a>> where G: 'a, 'g: 'a

§

type EdgeIt<'a> = ReverseWrapIt<<G as FiniteGraph>::EdgeIt<'a>> where G: 'a, 'g: 'a

source§

impl<ID> FiniteGraph for VecGraph<ID>where ID: PrimInt + Unsigned,

§

type NodeIt<'a> = NodeIt<ID> where ID: 'a

§

type EdgeIt<'a> = EdgeIt<ID> where ID: 'a

source§

impl<ID, N, E> FiniteGraph for LinkedListGraph<ID, N, E>where ID: PrimInt + Unsigned + 'static,

§

type NodeIt<'a> = NodeIt<ID> where N: 'a, E: 'a

§

type EdgeIt<'a> = EdgeIt<ID> where N: 'a, E: 'a