networkit-rs 0.1.0

Rust bindings for Networkit
Documentation
use networkit_rs::base::Algorithm;
use networkit_rs::community::{community_graph, CommunityDetector, PLM};
use networkit_rs::graph::Graph;
use networkit_rs::tools::to_undirected;

#[test]
fn creation() {
    let mut g = Graph::new(10, false, true, false);
    g.add_edge(0, 2, None, false);
    g.add_edge(1, 3, None, false);
    g.add_edge(9, 0, None, false);
    println!("Nodes");
    for u in g.iter_nodes() {
        println!("{u}");
    }
    println!("Edges");
    for (u, v, wt) in g.iter_edges_weight() {
        println!("{u} -> {v}: {wt}")
    }
    println!("Neigbours");
    for u in g.iter_neighbours(0).unwrap() {
        println!("{u}")
    }
    println!("InNeigbours");
    for u in g.iter_in_neighbours(0).unwrap() {
        println!("{u}")
    }

    let g = to_undirected(&g);

    let mut plm = PLM::new(&g, None, None, None, None, None, None).unwrap();
    plm.run().unwrap();
    let p = plm.get_partition();
    let ng = community_graph(&g, &p).unwrap();

    println!("Community edges");
    for (u, v, wt) in ng.iter_edges_weight() {
        println!("{u} -> {v}: {wt}")
    }
}