arraydeque 0.4.5

A ring buffer with a fixed capacity, which can be stored on the stack.


build status

A circular buffer with fixed capacity. Requires Rust 1.20+.

This crate is inspired by bluss/arrayvec



First, add the following to your Cargo.toml:

arraydeque = "0.4"

Next, add this to your crate root:

extern crate arraydeque;

Currently arraydeque by default links to the standard library, but if you would instead like to use arraydeque in a #![no_std] situation or crate you can request this via:

arraydeque = { version = "0.4", default-features = false }


extern crate arraydeque;

use arraydeque::ArrayDeque;

fn main() {
    let mut deque: ArrayDeque<[_; 2]> = ArrayDeque::new();
    assert_eq!(deque.capacity(), 2);
    assert_eq!(deque.len(), 0);

    assert_eq!(deque.len(), 2);

    assert_eq!(deque.pop_front(), Some(1));
    assert_eq!(deque.pop_front(), Some(2));
    assert_eq!(deque.pop_front(), None);


  • 0.4.5 Update generic-array to 0.12.

  • 0.4.4 Fix UB: Some(ArrayDeque::new(xs)).is_some() == false. (#12)

  • 0.4.3 Add support for generic-array under use_generic_array feature.

  • 0.4.1 Capacity now equal to backend_array.len().

  • 0.3.1 Add behaviors: Saturating and Wrapping.


All kinds of contribution are welcomed.

  • Issus. Feel free to open an issue when you find typos, bugs, or have any question.
  • Pull requests. New collection, better implementation, more tests, more documents and typo fixes are all welcomed.


Licensed under MIT license (LICENSE-MIT or