10 releases

Uses old Rust 2015

0.2.6 Jul 27, 2020
0.2.5 Jun 21, 2020
0.2.4 Mar 26, 2020
0.2.3 Jan 9, 2020
0.1.2 Jul 21, 2017

#1373 in Data structures

Download history 3525/week @ 2024-07-22 3678/week @ 2024-07-29 3306/week @ 2024-08-05 5005/week @ 2024-08-12 4301/week @ 2024-08-19 3837/week @ 2024-08-26 4019/week @ 2024-09-02 4372/week @ 2024-09-09 3282/week @ 2024-09-16 3448/week @ 2024-09-23 4062/week @ 2024-09-30 6932/week @ 2024-10-07 6128/week @ 2024-10-14 4817/week @ 2024-10-21 6652/week @ 2024-10-28 5620/week @ 2024-11-04

23,599 downloads per month
Used in 27 crates (16 directly)

MIT/Apache

25KB
512 lines

circular-queue

crates.io Documentation Build Status Build Status

A circular buffer-like queue container. Created with a set capacity. When pushing new items over capacity, old ones get overwritten. Supports iteration in newest to oldest and in oldest to newest order.

License

Licensed under either of

at your option.


lib.rs:

A circular buffer-like queue.

The CircularQueue<T> is created with a set capacity, then items are pushed in. When the queue runs out of capacity, newer items start overwriting the old ones, starting from the oldest.

There are built-in iterators that go from the newest items to the oldest ones and from the oldest items to the newest ones.

Two queues are considered equal if iterating over them with iter() would yield the same sequence of elements.

Enable the serde_support feature for Serde support.

Examples

use circular_queue::CircularQueue;

let mut queue = CircularQueue::with_capacity(3);
queue.push(1);
queue.push(2);
queue.push(3);
queue.push(4);

assert_eq!(queue.len(), 3);

let mut iter = queue.iter();

assert_eq!(iter.next(), Some(&4));
assert_eq!(iter.next(), Some(&3));
assert_eq!(iter.next(), Some(&2));

Dependencies

~0–380KB