13 IntoNeighborsDirected
,
24 /// An edge-reversing graph adaptor.
26 /// All edges have the opposite direction with `Reversed`.
27 #[derive(Copy, Clone, Debug)]
28 pub struct Reversed
<G
>(pub G
);
30 impl<G
: GraphBase
> GraphBase
for Reversed
<G
> {
31 type NodeId
= G
::NodeId
;
32 type EdgeId
= G
::EdgeId
;
35 impl<G
: GraphRef
> GraphRef
for Reversed
<G
> { }
37 Data
!{delegate_impl [[G], G, Reversed<G>, access0]}
39 impl<G
> IntoNeighbors
for Reversed
<G
>
40 where G
: IntoNeighborsDirected
42 type Neighbors
= G
::NeighborsDirected
;
43 fn neighbors(self, n
: G
::NodeId
) -> G
::NeighborsDirected
45 self.0.neighbors_directed(n
, Incoming
)
49 impl<G
> IntoNeighborsDirected
for Reversed
<G
>
50 where G
: IntoNeighborsDirected
52 type NeighborsDirected
= G
::NeighborsDirected
;
53 fn neighbors_directed(self, n
: G
::NodeId
, d
: Direction
)
54 -> G
::NeighborsDirected
56 self.0.neighbors_directed(n
, d
.opposite())
60 impl<G
: Visitable
> Visitable
for Reversed
<G
>
63 fn visit_map(&self) -> G
::Map
{
66 fn reset_map(&self, map
: &mut Self::Map
) {
67 self.0.reset_map(map
);
72 /// A reversed edge reference
73 #[derive(Copy, Clone, Debug)]
74 pub struct ReversedEdgeReference
<R
>(R
);
77 impl<R
> EdgeRef
for ReversedEdgeReference
<R
>
80 type NodeId
= R
::NodeId
;
81 type EdgeId
= R
::EdgeId
;
82 type Weight
= R
::Weight
;
83 fn source(&self) -> Self::NodeId
{
86 fn target(&self) -> Self::NodeId
{
89 fn weight(&self) -> &Self::Weight
{
92 fn id(&self) -> Self::EdgeId
{
97 impl<G
> IntoEdgeReferences
for Reversed
<G
>
98 where G
: IntoEdgeReferences
100 type EdgeRef
= ReversedEdgeReference
<G
::EdgeRef
>;
101 type EdgeReferences
= ReversedEdgeReferences
<G
::EdgeReferences
>;
102 fn edge_references(self) -> Self::EdgeReferences
{
103 ReversedEdgeReferences
{
104 iter
: self.0.edge_references(),
109 /// A reversed edge references iterator.
110 pub struct ReversedEdgeReferences
<I
> {
114 impl<I
> Iterator
for ReversedEdgeReferences
<I
>
118 type Item
= ReversedEdgeReference
<I
::Item
>;
119 fn next(&mut self) -> Option
<Self::Item
> {
120 self.iter
.next().map(ReversedEdgeReference
)
124 macro_rules
! access0
{
128 NodeIndexable
!{delegate_impl [[G], G, Reversed<G>, access0]}
129 NodeCompactIndexable
!{delegate_impl [[G], G, Reversed<G>, access0]}
130 IntoNodeIdentifiers
!{delegate_impl [[G], G, Reversed<G>, access0]}
131 IntoNodeReferences
!{delegate_impl [[G], G, Reversed<G>, access0]}
132 GraphProp
!{delegate_impl [[G], G, Reversed<G>, access0]}
133 NodeCount
!{delegate_impl [[G], G, Reversed<G>, access0]}