From 88fda5c654ad2db66fa4c51e2762e7574591fe01 Mon Sep 17 00:00:00 2001 From: lisk77 Date: Mon, 21 Jul 2025 03:01:40 +0200 Subject: [PATCH] fix(ecs): added safety boundaries to the IdQueue --- crates/comet_ecs/src/id.rs | 59 +++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/crates/comet_ecs/src/id.rs b/crates/comet_ecs/src/id.rs index b09b52b..ea9e021 100755 --- a/crates/comet_ecs/src/id.rs +++ b/crates/comet_ecs/src/id.rs @@ -1,40 +1,45 @@ #[derive(Debug, Clone)] pub struct IdQueue { - queue: Vec + queue: Vec, } impl IdQueue { - pub fn new() -> Self { - Self { queue: Vec::new() } - } + pub fn new() -> Self { + Self { queue: Vec::new() } + } - pub fn from_vec(queue: Vec) -> Self { - Self { queue } - } + pub fn from_vec(queue: Vec) -> Self { + Self { queue } + } - pub fn front(&self) -> Option { - Some(self.queue[0]) - } + pub fn front(&self) -> Option { + if self.queue.len() > 0 { + return Some(self.queue[0]); + } + None + } - pub fn enqueue(&mut self, id: u32) { - self.queue.push(id) - } + pub fn enqueue(&mut self, id: u32) { + self.queue.push(id) + } - pub fn sorted_enqueue(&mut self, id: u32) { - self.enqueue(id); - self.queue.sort(); - } + pub fn sorted_enqueue(&mut self, id: u32) { + self.enqueue(id); + self.queue.sort(); + } - pub fn dequeue(&mut self) -> Option { - Some(self.queue.remove(0)) + pub fn dequeue(&mut self) -> Option { + if self.queue.len() > 0 { + return Some(self.queue.remove(0)); + } + None + } - } + pub fn is_empty(&self) -> bool { + self.queue.len() == 0 + } - pub fn is_empty(&self) -> bool { - self.queue.len() == 0 - } - - pub fn size(&self) -> u32 { - self.queue.len() as u32 - } + pub fn size(&self) -> u32 { + self.queue.len() as u32 + } }