@@ -88,14 +88,15 @@ impl<N: Hash + Eq + Clone, E: Eq + Hash + Clone, V> DependencyQueue<N, E, V> {
88
88
}
89
89
self . priority = out. into_iter ( ) . map ( |( n, set) | ( n, set. len ( ) ) ) . collect ( ) ;
90
90
91
- fn depth < N : Hash + Eq + Clone , E : Hash + Eq + Clone > (
91
+ fn depth < ' a , N : Hash + Eq + Clone , E : Hash + Eq + Clone > (
92
92
key : & N ,
93
93
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] ;
97
98
assert ! ( !depth. is_empty( ) , "cycle in DependencyQueue" ) ;
98
- return depth. clone ( ) ;
99
+ return depth;
99
100
}
100
101
results. insert ( key. clone ( ) , HashSet :: new ( ) ) ;
101
102
@@ -108,12 +109,12 @@ impl<N: Hash + Eq + Clone, E: Eq + Hash + Clone, V> DependencyQueue<N, E, V> {
108
109
. flat_map ( |it| it. values ( ) )
109
110
. flat_map ( |set| set)
110
111
{
111
- set. extend ( depth ( dep, map, results) )
112
+ set. extend ( depth ( dep, map, results) . iter ( ) . cloned ( ) )
112
113
}
113
114
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 ;
117
118
}
118
119
}
119
120
0 commit comments