//! Degree centrality (normalised by `n - 1`).
usecrate::error::GraphalgResult;usecrate::repr::adjacency_list::AdjacencyList;pubfndegree_centrality(g:&AdjacencyList)->GraphalgResult<Vec<f64>>{let n = g.n;if n <=1{returnOk(vec![0.0; n]);}let denom =(n -1)asf64;Ok(g.out_degrees().into_iter().map(|d|d asf64/ denom).collect())}pubfnin_degree_centrality(g:&AdjacencyList)->GraphalgResult<Vec<f64>>{let n = g.n;if n <=1{returnOk(vec![0.0; n]);}let denom =(n -1)asf64;Ok(g.in_degrees().into_iter().map(|d|d asf64/ denom).collect())}pubfnout_degree_centrality(g:&AdjacencyList)->GraphalgResult<Vec<f64>>{degree_centrality(g)}#[cfg(test)]modtests{usesuper::*;#[test]fnstar_degree(){letmut g =AdjacencyList::new(4);for v in1..4{
g.add_undirected_edge(0, v).expect("ok");}let dc =degree_centrality(&g).expect("ok");assert!((dc[0]-1.0).abs()< 1e-12);}}