Skip to main content

is_acyclic

Function is_acyclic 

Source
pub fn is_acyclic(nodes: &[Node], edges: &[Edge]) -> bool
Expand description

Does the edge set form a directed acyclic graph? Kahn’s algorithm over the node set.

use majordomus_cli::graph::{is_acyclic, Edge, Node};
fn n(id: &str) -> Node {
    Node { id: id.into(), kind: "x".into(), label: id.into(), summary: None, route: None,
            source: None, status: None, external: false, facts: Default::default() }
}
fn e(a: &str, b: &str) -> Edge { Edge { source: a.into(), target: b.into(), kind: "k".into() } }
assert!(is_acyclic(&[n("a"), n("b")], &[e("a", "b")]));
assert!(!is_acyclic(&[n("a"), n("b")], &[e("a", "b"), e("b", "a")]));