pub fn eulerian_cycle(graph: &Graph) -> IgraphResult<Vec<u32>>Expand description
Build an Eulerian cycle if one exists, or return an error.
Unlike eulerian_path, this function requires that every vertex
with nonzero degree has even degree (undirected) or equal in-/out-degree
(directed). Returns Err if no Eulerian cycle exists.
Counterpart of igraph_eulerian_cycle() from
references/igraph/src/paths/eulerian.c:594.
§Examples
use rust_igraph::{Graph, eulerian_cycle};
// Triangle 0-1-2-0: every vertex has even degree → cycle exists.
let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(2, 0).unwrap();
let cycle = eulerian_cycle(&g).unwrap();
assert_eq!(cycle.len(), 3);
// Path 0-1-2: has Euler path but no Euler cycle → error.
let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
assert!(eulerian_cycle(&g).is_err());