Analyze dependencies of cargo projects
use crate::{AnnotationGraph, Measurement, Variable};

pub fn nodes<'graph>(annotations: &'graph AnnotationGraph) -> Vec<&'graph str> {
    annotations.packages().map(|node| node.name()).collect()
}

pub fn links<'graph>(annotations: &'graph AnnotationGraph) -> Vec<(&'graph str, &'graph str, f64)> {
    let mut sankey_links = Vec::new();

    for (source, target) in annotations.edges() {
        let edge_weight =
            annotations.variable(target, Variable::UnitDuration, Measurement::Relative);

        sankey_links.push((source.name(), target.name(), edge_weight));
    }

    sankey_links
}