|
1 | | -import gleam/queue.{type Queue} |
| 1 | +import gleam/deque.{type Deque} |
2 | 2 |
|
3 | 3 | pub opaque type CircularBuffer(t) { |
4 | | - CircularBuffer(capacity: Int, size: Int, queue: Queue(t)) |
| 4 | + CircularBuffer(capacity: Int, size: Int, queue: Deque(t)) |
5 | 5 | } |
6 | 6 |
|
7 | 7 | pub fn new(capacity: Int) -> CircularBuffer(t) { |
8 | 8 | let assert True = capacity > 0 |
9 | | - CircularBuffer(capacity, 0, queue.new()) |
| 9 | + CircularBuffer(capacity, 0, deque.new()) |
10 | 10 | } |
11 | 11 |
|
12 | 12 | pub fn read(buffer: CircularBuffer(t)) -> Result(#(t, CircularBuffer(t)), Nil) { |
13 | | - case queue.pop_front(buffer.queue) { |
| 13 | + case deque.pop_front(buffer.queue) { |
14 | 14 | Ok(#(item, queue)) -> { |
15 | 15 | let buffer = CircularBuffer(..buffer, queue: queue, size: buffer.size - 1) |
16 | 16 | Ok(#(item, buffer)) |
@@ -40,14 +40,14 @@ pub fn overwrite(buffer: CircularBuffer(t), item: t) -> CircularBuffer(t) { |
40 | 40 | } |
41 | 41 |
|
42 | 42 | fn unchecked_write(buffer: CircularBuffer(t), item: t) -> CircularBuffer(t) { |
43 | | - let queue = queue.push_back(buffer.queue, item) |
| 43 | + let queue = deque.push_back(buffer.queue, item) |
44 | 44 | CircularBuffer(..buffer, queue: queue, size: buffer.size + 1) |
45 | 45 | } |
46 | 46 |
|
47 | 47 | fn discard_oldest(buffer: CircularBuffer(t)) -> CircularBuffer(t) { |
48 | | - let queue = case queue.pop_front(buffer.queue) { |
| 48 | + let queue = case deque.pop_front(buffer.queue) { |
49 | 49 | Ok(#(_, queue)) -> queue |
50 | | - Error(_) -> queue.new() |
| 50 | + Error(_) -> deque.new() |
51 | 51 | } |
52 | 52 | CircularBuffer(..buffer, queue: queue, size: buffer.size - 1) |
53 | 53 | } |
|
0 commit comments