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