queued_rust/queues/
mod.rs1use thiserror::Error;
2
3#[derive(Error, Debug, PartialEq)]
5pub enum QueueError {
6 #[error("The queue is full try clearing it before filling it")]
8 Full,
9}
10
11mod reg; mod sorted; pub use reg::Queue;
15pub use sorted::SortedQueue;
16
17pub fn merge_sorted_queues<T>(q1: SortedQueue<T>, q2: SortedQueue<T>, reverse:bool) -> SortedQueue<T> where T: Ord {
18 let mut res_queue = SortedQueue::new(reverse);
19
20 for item in q1 {
21 res_queue.add(item);
22 };
23 for item in q2 {
24 res_queue.add(item);
25 };
26
27 res_queue
28}
29
30pub fn merge_queues<T>(q1: Queue<T>, q2: Queue<T>, reverse: bool) -> Queue<T> {
31 let mut res_queue = Queue::new(reverse);
32
33 for item in q1 {
34 res_queue.add(item);
35 }
36 for item in q2 {
37 res_queue.add(item);
38 }
39
40 res_queue
41}
42
43pub fn queue_to_vec<T>(q: Queue<T>) -> Vec<T> {
44 let mut vec = vec![];
45 for item in q {
46 vec.push(item);
47 }
48 vec
49}
50
51pub fn sorted_queue_to_vec<T>(q: SortedQueue<T>) -> Vec<T> where T: Ord {
52 let mut vec = vec![];
53 for item in q {
54 vec.push(item);
55 }
56 vec
57}