termgraph 0.4.0

A Crate to displays Graphs in the Terminal
Documentation
use std::collections::HashMap;

use rand::Rng;
use termgraph::{Config, DirectedGraph, IDFormatter};

const NODE_COUNT: usize = 20;

fn main() {
    let config = Config::new(IDFormatter::new(), 3).default_colors();

    let nodes: Vec<_> = (0..NODE_COUNT)
        .map(|_| rand::thread_rng().gen_range(10..100))
        .collect();

    let edge_count = rand::thread_rng().gen_range((NODE_COUNT / 2)..(NODE_COUNT - 1));

    let edges: HashMap<_, _> = (0..edge_count)
        .map(|_| {
            let src = rand::thread_rng().gen_range(0..NODE_COUNT);
            let target = loop {
                let tmp = rand::thread_rng().gen_range(0..NODE_COUNT);
                if tmp != src {
                    break tmp;
                }
            };

            (nodes[src], nodes[target])
        })
        .into_iter()
        .collect();

    let graph = {
        let mut tmp = DirectedGraph::new();

        tmp.add_nodes(nodes.into_iter().map(|i| (i, i.to_string())));
        tmp.add_edges(edges);

        tmp
    };

    termgraph::display(&graph, &config);
}