use mio::Token;
#[derive(Debug)]
pub struct Tokens {
next: Token,
free_list: Vec<Token>,
}
impl Default for Tokens {
fn default() -> Self {
Self {
next: Token(2),
free_list: Vec::default(),
}
}
}
impl Tokens {
pub fn create(&mut self) -> Token {
self.free_list.pop().unwrap_or_else(|| {
let t = self.next;
self.next = Token(t.0 + 1);
t
})
}
pub fn recycle(&mut self, tkn: Token) {
self.free_list.push(tkn);
}
}