pub trait EdgeTypes<'a, G: WithEdge> {
type EdgeIter: Iterator<Item = Edge<G>>;
type OutEdgeIter: Iterator<Item = Edge<G>>;
}
impl<'a, 'b, G> EdgeTypes<'a, Subgraph<'b, G>> for Subgraph<'b, G> where
G: 'b + Graph, type EdgeIter = Cloned<Iter<'a, Edge<G>>>; type OutEdgeIter = Cloned<Iter<'a, Edge<G>>>;
impl<'a, 'b, G> EdgeTypes<'a, SpanningSubgraph<'b, G>> for SpanningSubgraph<'b, G> where
G: 'b + WithEdge + WithVertexProp<Vec<Edge<G>>>, type EdgeIter = Cloned<Iter<'a, Edge<G>>>; type OutEdgeIter = Cloned<Iter<'a, Edge<G>>>;
impl<'a, V, K> EdgeTypes<'a, AdjSet<V, K>> for AdjSet<V, K> where
V: AdjSetVertex,
K: AdjSetEdgeKind<V>, type EdgeIter = Edges<'a, V, K>; type OutEdgeIter = OutEdges<'a, V, K>;
impl<'a, K: CompleteEdgeKind> EdgeTypes<'a, Complete<K>> for Complete<K> type EdgeIter = Map<Range<usize>, fn(_: usize) -> K::Edge>; type OutEdgeIter = COutEdgeIter<Edge<Self>>;
impl<'a, V: Num, K: StaticEdgeKind> EdgeTypes<'a, Static<V, K>> for Static<V, K> type EdgeIter = SEdgeIter<K>; type OutEdgeIter = Cloned<Iter<'a, Edge<Self>>>;