pub fn subcomponent(
graph: &Graph,
source: VertexId,
mode: SubcomponentMode,
) -> IgraphResult<Vec<VertexId>>Expand description
Returns all vertices reachable from source following edges in the
specified mode.
For undirected graphs, mode is ignored (all modes are equivalent).
The result always includes source itself. Vertices are returned
in BFS discovery order.
§Errors
Returns VertexOutOfRange if source >= vcount.
§Examples
use rust_igraph::{Graph, subcomponent, SubcomponentMode};
let mut g = Graph::new(5, true).unwrap();
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(3, 4).unwrap();
// From vertex 0, following OUT edges: reach 0, 1, 2
let reach = subcomponent(&g, 0, SubcomponentMode::Out).unwrap();
assert_eq!(reach, vec![0, 1, 2]);
// From vertex 2, following OUT edges: only 2 (no outgoing)
let reach = subcomponent(&g, 2, SubcomponentMode::Out).unwrap();
assert_eq!(reach, vec![2]);
// From vertex 2, following IN edges: reach 2, 1, 0
let reach = subcomponent(&g, 2, SubcomponentMode::In).unwrap();
assert_eq!(reach, vec![2, 1, 0]);
// Following ALL: reach 0, 1, 2 (component of 0-1-2)
let reach = subcomponent(&g, 1, SubcomponentMode::All).unwrap();
assert_eq!(reach.len(), 3);