Crate xdag

Source
Expand description

§XDag

A simple DAG (Directed Acyclic Graph) libarary

§Note

This lib just provides a data-structure to store DAG with checking. It doesn’t contain any algorithm about DAG

§Details

XDAG stores DAG by BTreeMap. Because it can ensure the order of edges and nodes.

§Some Examples

// Create a new DAG
let mut dag = Dag::new();
// insert 3 nodes with data '()'
dag.insert_node(2, ());
dag.insert_node(4, ());
dag.insert_node(3, ());
// insert 2 edges with data '()'
dag.insert_edge(2, 3, ()).unwrap();
dag.insert_edge(2, 4, ()).unwrap();
// Get all roots and leaves in DAG
let roots = dag.roots().map(|(id, _)| id).collect::<Vec<_>>();
let leaves = dag.leaves().map(|(id, _)| id).collect::<Vec<_>>();
assert_eq!(&roots, &[2]);
for id in [3, 4].iter() {
    assert!(leaves.contains(id))
}

Modules§

iters

Structs§

Dag
DAG

Enums§

DagError
DAG errors