diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2024-10-05 09:20:50 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2024-10-05 09:20:50 +1300 |
commit | 73e7394e32720bb87300d565ee3f52e31ddfc41e (patch) | |
tree | 2583f22985d6c7acc96d985a5507be4993b93401 /src | |
download | event-queue-73e7394e32720bb87300d565ee3f52e31ddfc41e.zip |
Update version to 1.0.0v1.0.0
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 50 |
1 files changed, 50 insertions, 0 deletions
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) + } +} |