Skip to content

Commit 384056e

Browse files
alexcrichtonEh2406
authored andcommitted
less clones
1 parent 0bce400 commit 384056e

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/cargo/util/dependency_queue.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,15 @@ impl<N: Hash + Eq + Clone, E: Eq + Hash + Clone, V> DependencyQueue<N, E, V> {
8888
}
8989
self.priority = out.into_iter().map(|(n, set)| (n, set.len())).collect();
9090

91-
fn depth<N: Hash + Eq + Clone, E: Hash + Eq + Clone>(
91+
fn depth<'a, N: Hash + Eq + Clone, E: Hash + Eq + Clone>(
9292
key: &N,
9393
map: &HashMap<N, HashMap<E, HashSet<N>>>,
94-
results: &mut HashMap<N, HashSet<N>>,
95-
) -> HashSet<N> {
96-
if let Some(depth) = results.get(key) {
94+
results: &'a mut HashMap<N, HashSet<N>>,
95+
) -> &'a HashSet<N> {
96+
if results.contains_key(key) {
97+
let depth = &results[key];
9798
assert!(!depth.is_empty(), "cycle in DependencyQueue");
98-
return depth.clone();
99+
return depth;
99100
}
100101
results.insert(key.clone(), HashSet::new());
101102

@@ -108,12 +109,12 @@ impl<N: Hash + Eq + Clone, E: Eq + Hash + Clone, V> DependencyQueue<N, E, V> {
108109
.flat_map(|it| it.values())
109110
.flat_map(|set| set)
110111
{
111-
set.extend(depth(dep, map, results))
112+
set.extend(depth(dep, map, results).iter().cloned())
112113
}
113114

114-
*results.get_mut(key).unwrap() = set.clone();
115-
116-
set
115+
let slot = results.get_mut(key).unwrap();
116+
*slot = set;
117+
return &*slot;
117118
}
118119
}
119120

0 commit comments

Comments
 (0)