use itertools::Itertools;
use petgraph::graphmap::DiGraphMap;
use petgraph::visit::{Dfs, Walker};
use crate::core::PackageId;
#[derive(Debug)]
pub struct Resolve {
pub graph: DiGraphMap<PackageId, ()>,
}
impl Resolve {
pub fn package_ids(&self) -> impl Iterator<Item = PackageId> + '_ {
self.graph.nodes()
}
pub fn solution_of(&self, root_package: PackageId) -> impl Iterator<Item = PackageId> + '_ {
assert!(&self.graph.contains_node(root_package));
Dfs::new(&self.graph, root_package)
.iter(&self.graph)
.unique()
}
}