#queue #limited #circular #complexity #full #overrides #default

limited-queue

a limited queue that overrides the oldest data if trying to push a data when the queue is full

1 unstable release

0.1.5 Jul 12, 2024
0.1.4 Jul 12, 2024

#4 in #full

Download history 384/week @ 2024-07-08 35/week @ 2024-07-15 7/week @ 2024-08-05 14/week @ 2024-08-26 20/week @ 2024-09-16 27/week @ 2024-09-23 13/week @ 2024-09-30

60 downloads per month
Used in super-rodio

MIT license

15KB
222 lines

Limited Queue

Crates.io Version GitHub top language GitHub CI Status Crates.io Downloads License

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.

No runtime deps