use crate::sized_queue::SizedQueue;
use std::collections::VecDeque;
pub struct SizedQueueDrain<T> {
queue: VecDeque<T>,
}
impl<T> SizedQueueDrain<T> {
pub fn new(old_queue: &mut SizedQueue<T>) -> Self {
let mut new_queue = VecDeque::with_capacity(old_queue.len());
loop {
match old_queue.pop() {
Some(v) => new_queue.push_back(v),
None => break,
}
}
SizedQueueDrain { queue: new_queue }
}
}
impl<T> Iterator for SizedQueueDrain<T> {
type Item = T;
fn next(&mut self) -> Option<T> {
self.queue.pop_front()
}
}