pubsub_bus/
queue.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// *************************************************************************
//
// Copyright (c) 2025 Andrei Gramakov. All rights reserved.
//
// This file is licensed under the terms of the MIT license.
// For a copy, see: https://opensource.org/licenses/MIT
//
// site:    https://agramakov.me
// e-mail:  mail@agramakov.me
//
// *************************************************************************
use std::collections::VecDeque;

#[cfg(test)]
mod tests;

pub struct EventQueue<T> {
    events: VecDeque<T>,
}

impl<T> EventQueue<T> {
    pub fn new(max_size: usize) -> Self {
        Self {
            events: VecDeque::with_capacity(max_size),
        }
    }

    // Push a new event into the queue
    pub fn push(&mut self, event: T) {
        self.events.push_back(event);
    }

    // Pop an event from the queue
    pub fn pop(&mut self) -> Option<T> {
        self.events.pop_front()
    }
}