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}