fn do_tick()

in timer/src/lib.rs [83:102]


    fn do_tick(&mut self) -> Vec<T> {
        let mut expired = Vec::with_capacity(self.buckets[self.tick].timers.len());
        let mut remaining = HashSet::new();
        for token in &self.buckets[self.tick].timers {
            if self.timers[token].remaining == 0 {
                expired.push(*token);
                self.timers.remove(token);
            } else {
                remaining.insert(*token);
                self.timers.get_mut(token).unwrap().remaining -= 1;
            }
        }
        self.buckets[self.tick].timers = remaining;
        if self.tick == (self.buckets.len() - 1) {
            self.tick = 0;
        } else {
            self.tick += 1;
        }
        expired
    }