From 73e7394e32720bb87300d565ee3f52e31ddfc41e Mon Sep 17 00:00:00 2001
From: Ben Bridle <bridle.benjamin@gmail.com>
Date: Sat, 5 Oct 2024 09:20:50 +1300
Subject: Update version to 1.0.0

---
 src/lib.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 src/lib.rs

(limited to 'src')

diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..5700c59
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,50 @@
+use std::collections::VecDeque;
+
+
+pub struct EventQueue<E> {
+    queue: VecDeque<E>,
+}
+
+impl<E> EventQueue<E> {
+    pub const fn new() -> Self {
+        Self { queue: VecDeque::new() }
+    }
+
+    pub fn read(&mut self) -> Option<E> {
+        self.queue.pop_front()
+    }
+
+    pub fn write(&mut self, event: E) {
+        self.queue.push_back(event);
+    }
+
+    pub fn as_reader(&mut self) -> EventReader<E> {
+        EventReader { queue: &mut self.queue }
+    }
+
+    pub fn as_writer(&mut self) -> EventWriter<E> {
+        EventWriter { queue: &mut self.queue }
+    }
+}
+
+
+pub struct EventReader<'q, E> {
+    queue: &'q mut VecDeque<E>,
+}
+
+impl<E> EventReader<'_, E> {
+    pub fn read(&mut self) -> Option<E> {
+        self.queue.pop_front()
+    }
+}
+
+
+pub struct EventWriter<'q, E> {
+    queue: &'q mut VecDeque<E>,
+}
+
+impl<E> EventWriter<'_, E> {
+    pub fn write(&mut self, event: E) {
+        self.queue.push_front(event)
+    }
+}
-- 
cgit v1.2.3-70-g09d2