queue.go
1package wazevoapi
2
3// Queue is the resettable queue where the underlying slice is reused.
4type Queue[T any] struct {
5 index int
6 Data []T
7}
8
9func (q *Queue[T]) Enqueue(v T) {
10 q.Data = append(q.Data, v)
11}
12
13func (q *Queue[T]) Dequeue() (ret T) {
14 ret = q.Data[q.index]
15 q.index++
16 return
17}
18
19func (q *Queue[T]) Empty() bool {
20 return q.index >= len(q.Data)
21}
22
23func (q *Queue[T]) Reset() {
24 q.index = 0
25 q.Data = q.Data[:0]
26}