Skip to content

Rust implementation of limited queue library: A circular queue that overrides the oldest element if trying to push data when queue is full

License

Notifications You must be signed in to change notification settings

Shiritai/limited-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Rust implementation of limited queue library: A circular queue that overrides the oldest element if trying to push data when queue is full

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published