File tree 1 file changed +5
-7
lines changed
1 file changed +5
-7
lines changed Original file line number Diff line number Diff line change 91
91
{
92
92
SPAWN_HOOKS . with ( |h| {
93
93
let mut hooks = h. take ( ) ;
94
+ let next = hooks. first . take ( ) ;
94
95
hooks. first = Some ( Arc :: new ( SpawnHook {
95
96
hook : Box :: new ( move |thread| Box :: new ( hook ( thread) ) ) ,
96
- next : hooks . first . take ( ) ,
97
+ next,
97
98
} ) ) ;
98
99
h. set ( hooks) ;
99
100
} ) ;
@@ -113,12 +114,9 @@ pub(super) fn run_spawn_hooks(thread: &Thread) -> ChildSpawnHooks {
113
114
snapshot
114
115
} ) ;
115
116
// Iterate over the hooks, run them, and collect the results in a vector.
116
- let mut next: & Option < Arc < SpawnHook > > = & hooks. first ;
117
- let mut to_run = Vec :: new ( ) ;
118
- while let Some ( hook) = next {
119
- to_run. push ( ( hook. hook ) ( thread) ) ;
120
- next = & hook. next ;
121
- }
117
+ let to_run: Vec < _ > = std:: iter:: successors ( hooks. first . as_deref ( ) , |hook| hook. next . as_deref ( ) )
118
+ . map ( |hook| ( hook. hook ) ( thread) )
119
+ . collect ( ) ;
122
120
// Pass on the snapshot of the hooks and the results to the new thread,
123
121
// which will then run SpawnHookResults::run().
124
122
ChildSpawnHooks { hooks, to_run }
You can’t perform that action at this time.
0 commit comments