hypergraphx 0.0.5

A hypergraph library for Rust, based on the Python library of the same name.
Documentation
use hypergraphx::prelude::*;
use nalgebra::DMatrix;

fn main() {
    undirected();
    directed();
}

fn undirected() {
    hypergraph! {
        let mut graph: UndirectedHypergraph<_, _> {
            nodes: {
                let v0 = 0;
                let v1 = 1;
                let v2 = 2;
                let v3 = 3;
                let v4 = 4;
                let v5 = 5;
                let v6 = 6;
                let v7 = 7;
            };
            edges: {
                [v0, v1] = 5;
                [v0, v2] = 7;
                [v1, v2] = 10;
                [v1, v3, v7] = 15;
                [v2, v3, v5] = 20;
                [v3, v4, v6] = 25;
                [v4, v5, v6] = 30;
                [v5, v6, v7] = 35;
                [v6, v7] = 40;
                [v0, v5, v6] = 45;
            };
        }
    }

    let u: DMatrix<i8> = graph.binary_incidence_matrix().into();
    let a = graph.adjacency_matrix();
    let d = graph.dual_adjacency_matrix();

    dbg!(u);
    dbg!(a);
    dbg!(d);

    let leig = graph.lambdas();
    dbg!(leig);
    let aeig = graph.alphas();
    dbg!(aeig);
}

fn directed() {
    hypergraph! {
        let mut graph: DirectedHypergraph<_, _> {
            nodes: {
                let v0 = 0;
                let v1 = 1;
                let v2 = 2;
                let v3 = 3;
                let v4 = 4;
                let v5 = 5;
                let v6 = 6;
                let v7 = 7;
                let v8 = 8;
            };
            edges: {
                ([v0, v1] -> [v4, v7]) = 5;
                ([v0, v2] -> [v1, v8]) = 7;
                ([v1, v2] -> [v8]) = 10;
                ([v1, v3, v7] -> [v2, v5]) = 15;
                ([v2, v3, v5] -> [v8]) = 20;
                ([v3, v4, v6] -> [v0, v1, v2]) = 25;
                ([v4, v5, v6] -> [v7]) = 30;
                ([v5, v6, v7] -> [v8, v0, v1]) = 35;
                ([v6, v7] -> [v8, v1]) = 40;
                ([v0, v5, v6] -> [v3]) = 45;
            };
        }
    }

    let u: DMatrix<i8> = graph.binary_incidence_matrix().into();
    let a: DMatrix<usize> = graph.adjacency_matrix().into();
    let d: DMatrix<usize> = graph.dual_adjacency_matrix().into();

    dbg!(u);
    dbg!(a);
    dbg!(d);

    let leig = graph.lambdas();
    dbg!(leig);
    let aeig = graph.alphas();
    dbg!(aeig);
}