1 unstable release
0.1.5 | Jul 12, 2024 |
---|---|
0.1.4 |
|
#819 in Algorithms
Used in super-rodio
15KB
222 lines
Limited Queue
A circular queue that overrides the oldest data if trying to push a data when the queue is full.
All operations are of O(1)
complexity, except the constructor with O(Vec::with_capacity)
.
The optional method pop
is provided when T
satisfies trait bound Default
.
Comparison
There is a similar library circular-queue
I found, but without the basic peek
and pop
operations. The comparison for now is listed below:
LimitedQueue |
circular-queue |
|
---|---|---|
Algorithm | circular queue (front-rear, without additional element slot) | circular queue (based on len and capacity provided by Vec ) |
Element trait bound needed | No, optionally Default for pop method |
- |
push , size-related methods |
✅ | ✅ |
peek , pop support |
✅: peek ✅: pop for T: Default |
❌ |
Indexing | ✅ - [0, len) - support [idx] - support get(idx) - optionally mutable ( [idx] ) |
❌ |
Iterator | ✅ - front to rear |
✅ - both ways - optionally mutable |
clear complexity |
O(1) |
O(Vec::clear) |
serde support |
❌ (TODO) | ✅ |
We welcome any kinds of contributions, please don't be hesitate to submit issues & PRs.
Setup
Please run scripts/setup.sh
to setup for committing. Currently, the script registers a git pre-commit hook.