data_structs/
queue.rs

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