Struct rs_graph::reversedigraph::ReverseDigraph [−][src]
pub struct ReverseDigraph<G>(_);
A digraph wrapping an existing graph with edges in opposite directions.
The sets of outgoing and incoming edges handled by the methods of
Digraph and Network are swapped, so incoming edges becoming
outgoing edges and vice versa.
Example
use rs_graph::{Graph, Digraph, IndexGraph, ReverseDigraph, LinkedListGraph}; use rs_graph::reverse; use rs_graph::classes::star; let g = star::<LinkedListGraph>(42); assert_eq!(g.num_nodes(), 43); assert_eq!(g.num_edges(), 42); assert!(g.edges().all(|e| g.node_id(g.src(e)) == 0 && g.node_id(g.snk(e)) > 0)); assert!(g.outedges(g.id2node(0)).all(|(_,v)| g.node_id(v) > 0)); assert!(g.inedges(g.id2node(0)).all(|(_,v)| g.node_id(v) == 0)); assert_eq!(g.outedges(g.id2node(0)).count(), 42); assert_eq!(g.inedges(g.id2node(0)).count(), 0); // Can be used by wrapping a reference. { let g = reverse(&g); assert_eq!(g.num_nodes(), 43); assert_eq!(g.num_edges(), 42); } // Or by conversion. let g = reverse(g); assert_eq!(g.num_nodes(), 43); assert_eq!(g.num_edges(), 42); assert!(g.edges().all(|e| g.node_id(g.snk(e)) == 0 && g.node_id(g.src(e)) > 0)); assert!(g.outedges(g.id2node(0)).all(|(_,v)| g.node_id(v) == 0)); assert!(g.inedges(g.id2node(0)).all(|(_,v)| g.node_id(v) > 0)); assert_eq!(g.outedges(g.id2node(0)).count(), 0); assert_eq!(g.inedges(g.id2node(0)).count(), 42);
Trait Implementations
impl<'a, G> Graph<'a> for ReverseDigraph<G> where
G: Graph<'a>, [src]
impl<'a, G> Graph<'a> for ReverseDigraph<G> where
G: Graph<'a>, type Node = G::Node
Type of a node.
type Edge = G::Edge
Type of an edge.
type NodeIter = G::NodeIter
Type of an iterator over all nodes.
type EdgeIter = G::EdgeIter
Type of an iterator over all edges.
type NeighIter = G::NeighIter
Type of an iterator over incident edges.
fn num_nodes(&self) -> usize[src]
fn num_nodes(&self) -> usizeReturn the number of nodes.
fn num_edges(&self) -> usize[src]
fn num_edges(&self) -> usizeReturn the number of edges.
fn enodes(&'a self, e: Self::Edge) -> (Self::Node, Self::Node)[src]
fn enodes(&'a self, e: Self::Edge) -> (Self::Node, Self::Node)Return the nodes connected by an edge. Read more
fn nodes(&'a self) -> Self::NodeIter[src]
fn nodes(&'a self) -> Self::NodeIterReturn an iterator over all nodes.
fn edges(&'a self) -> Self::EdgeIter[src]
fn edges(&'a self) -> Self::EdgeIterReturn an iterator over all edges. Read more
fn neighs(&'a self, u: Self::Node) -> Self::NeighIter[src]
fn neighs(&'a self, u: Self::Node) -> Self::NeighIterReturn an iterator over the edges adjacent to some node. Read more
impl<'a, G> IndexGraph<'a> for ReverseDigraph<G> where
G: IndexGraph<'a>, [src]
impl<'a, G> IndexGraph<'a> for ReverseDigraph<G> where
G: IndexGraph<'a>, fn node_id(&self, u: Self::Node) -> usize[src]
fn node_id(&self, u: Self::Node) -> usizeReturn a unique id associated with a node.
fn id2node(&'a self, id: usize) -> Self::Node[src]
fn id2node(&'a self, id: usize) -> Self::NodeReturn the node associated with the given id. Read more
fn edge_id(&self, e: Self::Edge) -> usize[src]
fn edge_id(&self, e: Self::Edge) -> usizeReturn a unique id associated with an edge. Read more
fn id2edge(&'a self, id: usize) -> Self::Edge[src]
fn id2edge(&'a self, id: usize) -> Self::EdgeReturn the edge associated with the given id. Read more
impl<'a, G> Digraph<'a> for ReverseDigraph<G> where
G: Digraph<'a>, [src]
impl<'a, G> Digraph<'a> for ReverseDigraph<G> where
G: Digraph<'a>, type OutEdgeIter = G::InEdgeIter
Type of an iterator over the forward edges leaving a node.
type InEdgeIter = G::OutEdgeIter
Type of an iterator over the backward edges entering a node.
fn src(&'a self, e: Self::Edge) -> Self::Node[src]
fn src(&'a self, e: Self::Edge) -> Self::NodeReturn the source node of an edge.
fn snk(&'a self, e: Self::Edge) -> Self::Node[src]
fn snk(&'a self, e: Self::Edge) -> Self::NodeReturn the sink node of an edge.
fn outedges(&'a self, u: Self::Node) -> Self::OutEdgeIter[src]
fn outedges(&'a self, u: Self::Node) -> Self::OutEdgeIterReturn an iterator over the outgoing edges of a node. Read more
fn inedges(&'a self, u: Self::Node) -> Self::InEdgeIter[src]
fn inedges(&'a self, u: Self::Node) -> Self::InEdgeIterReturn an iterator over the incoming edges of a node. Read more
impl<'a, G> Network<'a> for ReverseDigraph<G> where
G: Network<'a>, [src]
impl<'a, G> Network<'a> for ReverseDigraph<G> where
G: Network<'a>, fn is_reverse(&self, e: Self::Edge, f: Self::Edge) -> bool[src]
fn is_reverse(&self, e: Self::Edge, f: Self::Edge) -> boolReturn true if e is the reverse edge of f.
fn reverse(&'a self, e: Self::Edge) -> Self::Edge[src]
fn reverse(&'a self, e: Self::Edge) -> Self::EdgeReturn the reverse edge of e.
fn is_forward(&self, e: Self::Edge) -> bool[src]
fn is_forward(&self, e: Self::Edge) -> boolReturn true if e is a forward edge.
fn forward(&'a self, e: Self::Edge) -> Self::Edge[src]
fn forward(&'a self, e: Self::Edge) -> Self::EdgeReturn the forward edge of e. Read more
fn is_backward(&self, e: Self::Edge) -> bool[src]
fn is_backward(&self, e: Self::Edge) -> boolReturn true if e is a backward edge.
fn backward(&'a self, e: Self::Edge) -> Self::Edge[src]
fn backward(&'a self, e: Self::Edge) -> Self::EdgeReturn the backward edge of e. Read more
fn bisrc(&'a self, e: Self::Edge) -> Self::Node[src]
fn bisrc(&'a self, e: Self::Edge) -> Self::NodeReturn the source of the directed edge e. Read more
fn bisnk(&'a self, e: Self::Edge) -> Self::Node[src]
fn bisnk(&'a self, e: Self::Edge) -> Self::NodeReturn the sink of the directed edge e. Read more
impl<'a, G> IndexNetwork<'a> for ReverseDigraph<G> where
G: IndexNetwork<'a>, [src]
impl<'a, G> IndexNetwork<'a> for ReverseDigraph<G> where
G: IndexNetwork<'a>, fn biedge_id(&self, e: Self::Edge) -> usize[src]
fn biedge_id(&self, e: Self::Edge) -> usizeReturn a unique id associated with a directed edge. Read more
fn id2biedge(&'a self, id: usize) -> Self::Edge[src]
fn id2biedge(&'a self, id: usize) -> Self::EdgeReturn the edge associated with the given id. Read more
impl<G> From<G> for ReverseDigraph<G>[src]
impl<G> From<G> for ReverseDigraph<G>Auto Trait Implementations
impl<G> Send for ReverseDigraph<G> where
G: Send,
impl<G> Send for ReverseDigraph<G> where
G: Send, impl<G> Sync for ReverseDigraph<G> where
G: Sync,
impl<G> Sync for ReverseDigraph<G> where
G: Sync,