Skip to content

Latest commit

 

History

History
34 lines (24 loc) · 1.92 KB

README.md

File metadata and controls

34 lines (24 loc) · 1.92 KB

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.