pub fn degree_sequence(
graph: &Graph,
mode: DegreeMode,
) -> IgraphResult<Vec<u32>>Expand description
Returns the degree sequence of the graph.
For undirected graphs, mode is ignored. For directed graphs:
Out: count outgoing edges per vertex.In: count incoming edges per vertex.All: count all incident edges per vertex.
Self-loops contribute 2 to a vertex’s degree in All mode for
undirected graphs (matching igraph C IGRAPH_LOOPS_TWICE convention),
and 1 each to in-degree and out-degree for directed graphs.
§Examples
use rust_igraph::{Graph, degree_sequence, DegreeMode};
let mut g = Graph::with_vertices(4);
g.add_edge(0, 1).unwrap();
g.add_edge(0, 2).unwrap();
g.add_edge(0, 3).unwrap();
let deg = degree_sequence(&g, DegreeMode::All).unwrap();
assert_eq!(deg, vec![3, 1, 1, 1]);
// Directed graph
let mut g = Graph::new(3, true).unwrap();
g.add_edge(0, 1).unwrap();
g.add_edge(0, 2).unwrap();
g.add_edge(1, 2).unwrap();
let out_deg = degree_sequence(&g, DegreeMode::Out).unwrap();
assert_eq!(out_deg, vec![2, 1, 0]);
let in_deg = degree_sequence(&g, DegreeMode::In).unwrap();
assert_eq!(in_deg, vec![0, 1, 2]);