bucket_queue/bucket/first_in_first_out/
mod.rs1use super::*;
2
3pub trait FirstInFirstOutBucket: Bucket {
4 fn enqueue(&mut self, item: Self::Item);
5
6 fn dequeue(&mut self) -> Option<Self::Item>;
7}
8
9use std::collections::VecDeque;
14
15impl<T> FirstInFirstOutBucket for VecDeque<T> {
16 fn enqueue(&mut self, item: Self::Item) {
17 self.push_back(item)
18 }
19
20 fn dequeue(&mut self) -> Option<Self::Item> {
21 self.pop_front()
22 }
23}
24
25
26impl<'a, Q, B> FirstInFirstOutBucket for DeferredBucket<'a, Q, B>
31 where Q: FirstInFirstOutQueue<B>,
32 B: FirstInFirstOutBucket,
33{
34 fn enqueue(&mut self, item: Self::Item) {
35 self.adding().enqueue(item)
36 }
37
38 fn dequeue(&mut self) -> Option<Self::Item> {
39 self.removing()?.dequeue()
40 }
41}