fn rec_execute(&mut self, graph: &G, v_virt_id: usize) {
        let v_real_id = self.id_map.real_id_of(v_virt_id);

        if self.out_deg[v_virt_id] == 0 {
            self.trail.push(v_real_id)
        } else {
            for (dst_real_id, edge) in graph.edges_from(v_real_id).unwrap() {
                let dst_virt_id = self.id_map.virt_id_of(dst_real_id);
                if self.unused_edges.contains(&edge.get_id()) {
                    self.unused_edges.remove(&edge.get_id());

                    self.out_deg[v_virt_id] -= 1;

                    if Ty::is_undirected() {
                        self.out_deg[dst_virt_id] -= 1;
                    }

                    self.rec_execute(graph, dst_virt_id);
                }
            }
            self.trail.push(v_real_id);
        }
    }
// Recursively find the next vertex id in the Eulerian trail/circuit.
Recursively find the next vertex id in the Eulerian trail/circuit.
Recursively find the next vertex id in the Eulerian trail / circuit .
fn rec_execute(&mut self, graph: &G, v_virt_id: usize) {
        let v_real_id = self.id_map.real_id_of(v_virt_id);
        if self.out_deg[v_virt_id] == 0 {
            self.trail.push(v_real_id)
        } else {
            for (dst_real_id, edge) in graph.edges_from(v_real_id).unwrap() {
                let dst_virt_id = self.id_map.virt_id_of(dst_real_id);
                if self.unused_edges.contains(&edge.get_id()) {
                    self.unused_edges.remove(&edge.get_id());
                    self.out_deg[v_virt_id] -= 1;
                    if Ty::is_undirected() {
                        self.out_deg[dst_virt_id] -= 1;
                    }
                    self.rec_execute(graph, dst_virt_id);
                }
            }
            self.trail.push(v_real_id);
        }
    }
fn rec_execute ( & mut self , graph : & G , v_virt_id : usize ) { let v_real_id = self . id_map . real_id_of ( v_virt_id ) ; if self . out_deg [ v_virt_id ] == 0 { self . trail . push ( v_real_id ) } else { for ( dst_real_id , edge ) in graph . edges_from ( v_real_id ) . unwrap ( ) { let dst_virt_id = self . id_map . virt_id_of ( dst_real_id ) ; if self . unused_edges . contains ( & edge . get_id ( ) ) { self . unused_edges . remove ( & edge . get_id ( ) ) ; self . out_deg [ v_virt_id ] -= 1 ; if Ty :: is_undirected ( ) { self . out_deg [ dst_virt_id ] -= 1 ; } self . rec_execute ( graph , dst_virt_id ) ; } } self . trail . push ( v_real_id ) ; } }
Recursively find the next vertex id in the Eulerian trail/circuit.
Recursively find the next vertex id in the Eulerian trail / circuit .
&mut self
graph
&G
v_virt_id
usize
&mut self
graph
&G
v_virt_id
usize