use cargo_metadata::PackageId;
use std::collections::HashMap;
pub(crate) mod formatter;
pub(crate) mod resolver;
type PackageGraphIndex = usize;
type PackageGraph =
petgraph::stable_graph::StableDiGraph<cargo_metadata::Package, (), PackageGraphIndex>;
#[derive(Debug)]
pub(crate) struct DependencyGraph {
index: HashMap<cargo_metadata::PackageId, PackageGraphIndex>,
packages: PackageGraph,
root_crate: cargo_metadata::PackageId,
}
impl DependencyGraph {
pub fn empty(root_crate: PackageId) -> Self {
Self {
index: HashMap::default(),
packages: PackageGraph::with_capacity(0, 0),
root_crate,
}
}
pub fn with_capacity(root_crate: PackageId, cap: usize) -> Self {
Self {
index: HashMap::default(),
packages: PackageGraph::with_capacity(cap, cap),
root_crate,
}
}
}