Migrate dependency tree to `petgraph::Graph`
Dependencies
- [2]
JVYWRCPTAdd basic chart visualisation - [3]
7CVIL7UJCreate simple metadata parser - [4]
B2L26LOAStore index of dependency nodes
Change contents
- replacement in src/main.rs at line 3
use cargo_metadata::{Node, PackageId};use charming::{series::{Graph, GraphCategory, GraphData, GraphLayout, GraphLink, GraphNode},Chart, HtmlRenderer,use cargo_metadata::{Node, Package, PackageId};use charming::{Chart, HtmlRenderer};use petgraph::{data::{Element, FromElements},Graph, - replacement in src/main.rs at line 15
node_index: HashMap<&'metadata PackageId, &'metadata Node>,dependency_tree: Graph<&'metadata PackageId, usize>, - replacement in src/main.rs at line 26
let mut node_index = HashMap::with_capacity(resolve.nodes.len());for node in &resolve.nodes {let insertion_result = node_index.insert(&node.id, node);// Make sure we didn't overwrite any existing entriesassert!(insertion_result.is_none());let edge_count = resolve.nodes.iter().map(|node| node.deps.len()).count();let mut dependency_tree = Graph::with_capacity(metadata.packages.len(), edge_count);let mut node_indexes = HashMap::new();for node in &metadata.packages {let node_index = dependency_tree.add_node(&node.id);node_indexes.insert(&node.id, node_index);}for resolved_dependency in &resolve.nodes {let parent_index = node_indexes.get(&resolved_dependency.id).unwrap();for child in &resolved_dependency.deps {let child_index = node_indexes.get(&child.pkg).unwrap();dependency_tree.add_edge(*parent_index, *child_index, 1);} - replacement in src/main.rs at line 48
node_index,dependency_tree, - replacement in src/main.rs at line 52
fn graph(&self) -> GraphData {let categories = vec![GraphCategory {fn graph_data(&self) -> charming::series::GraphData {let categories = vec![charming::series::GraphCategory { - replacement in src/main.rs at line 61
.map(|(pkg, coords)| GraphNode {.map(|(pkg, coords)| charming::series::GraphNode { - replacement in src/main.rs at line 82
.map(|(parent, child)| GraphLink {.map(|(parent, child)| charming::series::GraphLink { - replacement in src/main.rs at line 89
GraphData {charming::series::GraphData { - replacement in src/main.rs at line 103
Graph::new()charming::series::Graph::new() - replacement in src/main.rs at line 105
.layout(GraphLayout::None).layout(charming::series::GraphLayout::None) - replacement in src/main.rs at line 107
.data(root_crate.graph()),.data(root_crate.graph_data()), - edit in Cargo.toml at line 9[2.1656]
petgraph = "0.6.4" - edit in Cargo.lock at line 88
"petgraph", - edit in Cargo.lock at line 100
[[package]]name = "equivalent"version = "1.0.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"[[package]]name = "fixedbitset"version = "0.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - edit in Cargo.lock at line 136
[[package]]name = "hashbrown"version = "0.14.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - edit in Cargo.lock at line 144
name = "indexmap"version = "2.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"dependencies = ["equivalent","hashbrown",][[package]] - edit in Cargo.lock at line 229
name = "petgraph"version = "0.6.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"dependencies = ["fixedbitset","indexmap",][[package]]