From 0b259c8ceaaad62ca54ea5d50c876f7f5f55d081 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Sun, 4 Aug 2024 20:34:58 -0400 Subject: [PATCH] Remove lock from `TreeDisplay` (#5770) --- crates/uv-resolver/src/lock.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/crates/uv-resolver/src/lock.rs b/crates/uv-resolver/src/lock.rs index 02701960b..d66d4c6f0 100644 --- a/crates/uv-resolver/src/lock.rs +++ b/crates/uv-resolver/src/lock.rs @@ -2629,8 +2629,6 @@ fn each_element_on_its_line_array(elements: impl Iterator { - /// The underlying [`Lock`] to display. - lock: &'env Lock, /// The root nodes in the [`Lock`]. roots: Vec<&'env DistributionId>, /// The edges in the [`Lock`]. @@ -2713,7 +2711,6 @@ impl<'env> TreeDisplay<'env> { .collect::>(); Self { - lock, roots, edges, depth, @@ -2809,9 +2806,9 @@ impl<'env> TreeDisplay<'env> { /// Depth-first traverse the nodes to render the tree. fn render(&self) -> Vec { - let mut visited: FxHashMap<&DistributionId, Vec<&DistributionId>> = FxHashMap::default(); - let mut path: Vec<&DistributionId> = Vec::new(); - let mut lines: Vec = Vec::new(); + let mut visited = FxHashMap::default(); + let mut path = Vec::new(); + let mut lines = Vec::new(); if self.package.is_empty() { for id in &self.roots { @@ -2819,11 +2816,10 @@ impl<'env> TreeDisplay<'env> { lines.extend(self.visit(id, &mut visited, &mut path)); } } else { - // Index all the IDs by package. - let by_package: FxHashMap<_, _> = - self.lock.by_id.keys().map(|id| (&id.name, id)).collect(); - for (index, package) in self.package.iter().enumerate() { - if index != 0 { + let by_package: FxHashMap<_, _> = self.roots.iter().map(|id| (&id.name, id)).collect(); + let mut first = true; + for package in &self.package { + if std::mem::take(&mut first) { lines.push(String::new()); } if let Some(id) = by_package.get(package) {