Skip to content

Commit fdac8e3

Browse files
Add internal_queue
1 parent 3328ebf commit fdac8e3

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

src/internal_queue.rs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,42 @@
1+
struct SimpleQueue<T> {
2+
payload: Vec<T>,
3+
pos: usize,
4+
}
15

6+
impl<T> SimpleQueue<T>
7+
where
8+
T: Copy,
9+
{
10+
fn reserve(&mut self, n: i32) {
11+
let n = n as usize;
12+
if n > self.payload.len() {
13+
self.payload.reserve(n - self.payload.len());
14+
}
15+
}
16+
17+
fn size(&self) -> i32 {
18+
(self.payload.len() - self.pos) as i32
19+
}
20+
21+
fn empty(&self) -> bool {
22+
self.pos == self.payload.len()
23+
}
24+
25+
fn push(&mut self, t: &T) {
26+
self.payload.push(*t);
27+
}
28+
29+
// Do we need mutable version?
30+
fn front(&self) -> &T {
31+
&self.payload[self.pos]
32+
}
33+
34+
fn clear(&mut self) {
35+
self.payload.clear();
36+
self.pos = 0;
37+
}
38+
39+
fn pop(&mut self) {
40+
self.pos += 1;
41+
}
42+
}

0 commit comments

Comments
 (0)