use petgraph::stable_graph::StableDiGraph; use crate::{ graph::{Label, LooseBendIndex, Weight}, primitive::{GenericPrimitive, GetInnerOuter}, }; pub struct OutwardLayerTraverser<'a> { layer: Option, graph: &'a StableDiGraph, } impl<'a> OutwardLayerTraverser<'a> { pub fn new( layer: Option, graph: &'a StableDiGraph, ) -> Self { Self { layer, graph } } } impl<'a> Iterator for OutwardLayerTraverser<'a> { type Item = LooseBendIndex; fn next(&mut self) -> Option { self.layer.map(|layer| { self.layer = GenericPrimitive::new(layer, self.graph).outer(); layer }) } }