hypergraphx 0.0.5

A hypergraph library for Rust, based on the Python library of the same name.
Documentation
#![allow(unused)]
use hypergraphx::prelude::*;

fn main() {
    let mut g = partite::BipartiteGraph::<(), ()>::new();
    // g.add_node((), 0);
    // g.add_node((), 0);
    // g.add_node((), 1);
    g.add_nodes([((), 0), ((), 0), ((), 1)].into_iter());

    dbg!(g.add_edge((), [0, 2])); // Ok
    dbg!(g.add_edge((), [0, 1])); // Err

    let mut g = partite::directed_bipartite::BipartiteHypergraph::<(), ()>::new();
    // g.add_node((), false);
    // g.add_node((), false);
    // g.add_node((), true);
    g.add_nodes([((), false), ((), false), ((), true)].into_iter());

    dbg!(g.add_edge((), vec![0], vec![2])); // Ok
    dbg!(g.add_edge((), vec![0], vec![1])); // Err
    dbg!(g.add_edge((), vec![0, 1], vec![2])); // Ok
    dbg!(g.add_edge((), vec![0, 2], vec![1])); // Err

    let mut g = partite::kpartite::PartiteHypergraph::<(), (), 3>::new();
    // g.add_node((), 0);
    // g.add_node((), 1);
    // g.add_node((), 2);
    // g.add_node((), 2);
    g.add_nodes([((), 0), ((), 1), ((), 2), ((), 2)].into_iter());
    dbg!(g.add_edge((), vec![0, 2])); // Ok
    dbg!(g.add_edge((), vec![0, 1])); // Ok
    dbg!(g.add_edge((), vec![0, 1, 2])); // Ok
    dbg!(g.add_edge((), vec![0, 1, 2, 3])); // Err
}