Skip to main content

to_directed

Function to_directed 

Source
pub fn to_directed(graph: &Graph, mode: ToDirectedMode) -> IgraphResult<Graph>
Expand description

Converts an undirected graph to a directed graph.

If the graph is already directed, returns a copy.

§Modes

  • Mutual: each undirected edge {u,v} becomes two directed edges u→v and v→u.
  • Arbitrary: each undirected edge {u,v} becomes a single directed edge from min(u,v) → max(u,v).

§Examples

use rust_igraph::{Graph, to_directed, ToDirectedMode};

let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();

// Mutual: each edge becomes two directed edges
let d = to_directed(&g, ToDirectedMode::Mutual).unwrap();
assert!(d.is_directed());
assert_eq!(d.ecount(), 4); // 2 edges × 2 directions

// Arbitrary: each edge gets one direction (canonical)
let d = to_directed(&g, ToDirectedMode::Arbitrary).unwrap();
assert!(d.is_directed());
assert_eq!(d.ecount(), 2);