pub fn reify_graph<T, F>(root: Rc<RefCell<T>>, children: F) -> ReifiedGraph<T>Expand description
Reify an Rc<RefCell<T>> graph into a ReifiedGraph.
The children closure extracts child pointers from a node’s data.
The resulting graph contains cloned node data and edges derived
from pointer identity.
§Examples
use reify_graph::reify_graph;
use std::cell::RefCell;
use std::rc::Rc;
#[derive(Clone, Debug)]
struct Node {
value: i32,
children: Vec<Rc<RefCell<Node>>>,
}
let shared = Rc::new(RefCell::new(Node { value: 2, children: vec![] }));
let root = Rc::new(RefCell::new(Node {
value: 0,
children: vec![
Rc::new(RefCell::new(Node { value: 1, children: vec![shared.clone()] })),
shared.clone(),
],
}));
let graph = reify_graph(root, |n| n.children.clone());
// 3 unique nodes: root(0), child(1), shared(2)
assert_eq!(graph.nodes.len(), 3);