@@ -47,13 +47,10 @@ impl DefUseAnalysis {
47
47
& self . info [ local]
48
48
}
49
49
50
- fn mutate_defs_and_uses < F > ( & self , local : Local , body : & mut Body < ' _ > , callback : F )
51
- where F : for < ' a > Fn ( & ' a Local ,
52
- PlaceContext ,
53
- Location ) -> Local {
50
+ fn mutate_defs_and_uses ( & self , local : Local , body : & mut Body < ' _ > , new_local : Local ) {
54
51
for place_use in & self . info [ local] . defs_and_uses {
55
52
MutateUseVisitor :: new ( local,
56
- & callback ,
53
+ new_local ,
57
54
body) . visit_location ( body, place_use. location )
58
55
}
59
56
}
@@ -63,7 +60,7 @@ impl DefUseAnalysis {
63
60
local : Local ,
64
61
body : & mut Body < ' _ > ,
65
62
new_local : Local ) {
66
- self . mutate_defs_and_uses ( local, body, |_ , _ , _| new_local)
63
+ self . mutate_defs_and_uses ( local, body, new_local)
67
64
}
68
65
}
69
66
@@ -117,30 +114,27 @@ impl Info {
117
114
}
118
115
}
119
116
120
- struct MutateUseVisitor < F > {
117
+ struct MutateUseVisitor {
121
118
query : Local ,
122
- callback : F ,
119
+ new_local : Local ,
123
120
}
124
121
125
- impl < F > MutateUseVisitor < F > {
126
- fn new ( query : Local , callback : F , _: & Body < ' _ > )
127
- -> MutateUseVisitor < F >
128
- where F : for < ' a > Fn ( & ' a Local , PlaceContext , Location ) -> Local {
122
+ impl MutateUseVisitor {
123
+ fn new ( query : Local , new_local : Local , _: & Body < ' _ > ) -> MutateUseVisitor {
129
124
MutateUseVisitor {
130
125
query,
131
- callback ,
126
+ new_local ,
132
127
}
133
128
}
134
129
}
135
130
136
- impl < F > MutVisitor < ' _ > for MutateUseVisitor < F >
137
- where F : for < ' a > Fn ( & ' a Local , PlaceContext , Location ) -> Local {
131
+ impl MutVisitor < ' _ > for MutateUseVisitor {
138
132
fn visit_local ( & mut self ,
139
133
local : & mut Local ,
140
- context : PlaceContext ,
141
- location : Location ) {
134
+ _context : PlaceContext ,
135
+ _location : Location ) {
142
136
if * local == self . query {
143
- * local = ( self . callback ) ( local , context , location )
137
+ * local = self . new_local ;
144
138
}
145
139
}
146
140
@@ -153,7 +147,7 @@ impl<F> MutVisitor<'_> for MutateUseVisitor<F>
153
147
let new_projection: Vec < _ > = place. projection . iter ( ) . map ( |elem|
154
148
match elem {
155
149
PlaceElem :: Index ( local) if * local == self . query => {
156
- PlaceElem :: Index ( ( self . callback ) ( & local , context , location ) )
150
+ PlaceElem :: Index ( self . new_local )
157
151
}
158
152
_ => elem. clone ( ) ,
159
153
}
0 commit comments