Skip to content

Commit 06c906d

Browse files
authored
feat: modified queue to use VecDeque instead of Vec (#98)
Also removed pointless return value of Queue::enqueue (if it fails it panics)
1 parent efcd869 commit 06c906d

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/data_structures/queue.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1+
use std::collections::VecDeque;
2+
13
pub struct Queue<T> {
2-
vec: Vec<T>,
4+
vec: VecDeque<T>,
35
}
46

57
impl<T> Queue<T> {
68
pub fn new() -> Self {
7-
Queue { vec: Vec::new() }
9+
Queue {
10+
vec: VecDeque::new(),
11+
}
812
}
913

10-
pub fn enqueue(&mut self, item: T) -> bool {
11-
self.vec.push(item);
12-
true
14+
pub fn enqueue(&mut self, item: T) {
15+
self.vec.push_back(item);
1316
}
1417

1518
pub fn len(&self) -> usize {
@@ -21,15 +24,11 @@ impl<T> Queue<T> {
2124
}
2225

2326
pub fn peek(&self) -> Option<&T> {
24-
self.vec.first()
27+
self.vec.front()
2528
}
2629

2730
pub fn dequeue(&mut self) -> Option<T> {
28-
if self.is_empty() {
29-
None
30-
} else {
31-
Some(self.vec.remove(0))
32-
}
31+
self.vec.pop_front()
3332
}
3433
}
3534

0 commit comments

Comments
 (0)