From a0bbd6f07b210d86cd9731903fd82235a9887994 Mon Sep 17 00:00:00 2001 From: Davirain Date: Tue, 4 Jun 2024 16:12:27 +0800 Subject: [PATCH] Update queue.rs --- rust/src/queue.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/rust/src/queue.rs b/rust/src/queue.rs index a9cc319..a455e95 100755 --- a/rust/src/queue.rs +++ b/rust/src/queue.rs @@ -76,11 +76,11 @@ impl Queue { if self.head == (self.tail + 1) % self.len { return Err(QueueError::Overflow); } - if let Some(value) = self.data.get_mut(self.tail) { - *value = element; - } else { - return Err(QueueError::FailedGetValue(self.tail)); - } + + *self + .data + .get_mut(self.tail) + .ok_or(QueueError::FailedGetValue(self.tail))? = element; if self.tail == (self.len - 1) { self.tail = 0; @@ -110,13 +110,17 @@ impl Queue { if self.is_empty() { return Err(QueueError::Underflow); } - let element = self.data.get(self.head); + if self.head == (self.len - 1) { self.head = 0; } else { self.head += 1; } - Ok(element.unwrap().clone()) + + self.data + .get(self.head) + .ok_or(QueueError::FailedGetValue(self.head)) + .cloned() } }