diff --git a/src/timer.rs b/src/timer.rs index 721fd09..30bbeb0 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -124,24 +124,19 @@ impl Timer { } fn clear(&mut self) { - let free_timer = |tv: &mut [TimerListListHeadRp]| { - for i in 0..tv.len() { - let head = &tv[i]; - while !head.borrow().empty() { - let timer = &head.borrow().first_entry().upgrade().unwrap(); - timer.borrow_mut().timer_entry.borrow_mut().del_init(); - if timer.borrow().attach_entry.borrow().empty() { - timer.borrow().attach_entry.borrow_mut().del_init(); - } + let free_timer = |head: &mut TimerListListHeadRp| { + while !head.borrow().empty() { + let timer = &head.borrow().first_entry().upgrade().unwrap(); + timer.borrow_mut().timer_entry.borrow_mut().del_init(); + if timer.borrow().attach_entry.borrow().empty() { + timer.borrow().attach_entry.borrow_mut().del_init(); } } }; - //free_timer(&mut self.free_timer_list); - free_timer(&mut self.tv1); - free_timer(&mut self.tv2); - free_timer(&mut self.tv3); - free_timer(&mut self.tv4); - free_timer(&mut self.tv5); + self.traverse_timer_list( + &mut |timer_list: &mut TimerListListHeadRp| { + free_timer(timer_list); + }); } fn new_timer_list(&mut self) -> Rc::> {