Skip to content

Commit 0659425

Browse files
committed
refactor(tree): Don't look up edges directly
1 parent 9700a89 commit 0659425

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

src/cargo/ops/tree/graph.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,16 +132,24 @@ impl<'a> Graph<'a> {
132132

133133
/// Returns a list of nodes the given node index points to for the given kind.
134134
pub fn edges_of_kind(&self, from: usize, kind: &EdgeKind) -> Vec<Edge> {
135-
let edges = self.edges[from].of_kind(kind);
135+
let edges = self.edges(from).of_kind(kind);
136136
// Created a sorted list for consistent output.
137137
let mut edges = edges.to_owned();
138138
edges.sort_unstable_by(|a, b| self.node(a.node()).cmp(&self.node(b.node())));
139139
edges
140140
}
141141

142+
fn edges(&self, from: usize) -> &Edges {
143+
&self.edges[from]
144+
}
145+
146+
fn edges_mut(&mut self, from: usize) -> &mut Edges {
147+
&mut self.edges[from]
148+
}
149+
142150
/// Returns `true` if the given node has any outgoing edges.
143151
pub fn has_outgoing_edges(&self, index: usize) -> bool {
144-
!self.edges[index].is_empty()
152+
!self.edges(index).is_empty()
145153
}
146154

147155
/// Gets a node by index.
@@ -207,13 +215,13 @@ impl<'a> Graph<'a> {
207215
let new_from = new_graph.add_node(node);
208216
remap[index] = Some(new_from);
209217
// Visit dependencies.
210-
for edge in graph.edges[index].all() {
218+
for edge in graph.edges(index).all() {
211219
let new_to_index = visit(graph, new_graph, remap, edge.node());
212220
let new_edge = Edge {
213221
kind: edge.kind(),
214222
node: new_to_index,
215223
};
216-
new_graph.edges[new_from].add_edge(new_edge);
224+
new_graph.edges_mut(new_from).add_edge(new_edge);
217225
}
218226
new_from
219227
}
@@ -473,10 +481,10 @@ fn add_pkg(
473481
}
474482
if !dep.uses_default_features() && dep.features().is_empty() {
475483
// No features, use a direct connection.
476-
graph.edges[from_index].add_edge(new_edge);
484+
graph.edges_mut(from_index).add_edge(new_edge);
477485
}
478486
} else {
479-
graph.edges[from_index].add_edge(new_edge);
487+
graph.edges_mut(from_index).add_edge(new_edge);
480488
}
481489
}
482490
}
@@ -522,13 +530,13 @@ fn add_feature(
522530
kind: to.kind(),
523531
node: node_index,
524532
};
525-
graph.edges[from].add_edge(from_edge);
533+
graph.edges_mut(from).add_edge(from_edge);
526534
}
527535
let to_edge = Edge {
528536
kind: EdgeKind::Feature,
529537
node: to.node(),
530538
};
531-
graph.edges[node_index].add_edge(to_edge);
539+
graph.edges_mut(node_index).add_edge(to_edge);
532540
(missing, node_index)
533541
}
534542

0 commit comments

Comments
 (0)