confitul 0.1.4

ConfitUL contains utilities for ConfitDB which is an experimental, distributed, real-time database, giving full control on conflict resolution.
Documentation
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()
    }
}