use std::collections::VecDeque;
#[derive(Debug)]
pub struct WorkQueue<T> {
queue: VecDeque<T>,
}
impl<T> WorkQueue<T> {
#[inline(always)]
pub fn new() -> Self { Self { queue: VecDeque::new() } }
#[inline(always)]
pub fn with_capacity(capacity: usize) -> Self {
Self {
queue: VecDeque::with_capacity(capacity),
}
}
#[inline(always)]
pub fn enqueue(&mut self, item: T) { self.queue.push_back(item); }
#[inline(always)]
pub fn dequeue(&mut self) -> Option<T> { self.queue.pop_front() }
#[inline(always)]
pub fn is_empty(&self) -> bool { self.queue.is_empty() }
#[inline(always)]
pub fn len(&self) -> usize { self.queue.len() }
}