1#[derive(Default, Debug)]
2pub struct Queue {
3 list: Vec<i32>,
4 size: usize,
5}
6
7impl Queue {
8 pub fn new() -> Queue {
9 Queue {
10 list: vec![],
11 size: 0,
12 }
13 }
14
15 pub fn from(values: &Vec<i32>) -> Queue {
16 Queue {
17 list: values.clone(),
18 size: values.len(),
19 }
20 }
21
22 pub fn enqueue(&mut self, value: i32) {
23 self.list.push(value);
24 self.size += 1;
25 }
26
27 pub fn dequeue(&mut self) -> Option<i32> {
28 let result = self.list.pop();
29
30 match result {
31 Some(value) => {
32 self.size -= 1;
33 Some(value)
34 }
35 None => None
36 }
37 }
38
39 pub fn size(&mut self) -> usize {
40 self.size
41 }
42
43 pub fn peek(&mut self) -> Option<i32> {
44 match self.size {
45 0 => None,
46 _ => self.list.last().copied(),
47 }
48 }
49}
50