Files
Mike Hommey 1c26b8dd06 Bug 2011354 - Bump required cargo version to 1.90 for vendoring. r=firefox-build-system-reviewers,webrtc-reviewers,dom-worker-reviewers,ng,ahochheiden
We're going to update the MSRV to 1.90 soon, and we might as well remove
the hacks we have in place from bug 1982939 and bug 1995920 for vendoring
backwards compatibility early.

Differential Revision: https://phabricator.services.mozilla.com/D279628
2026-01-23 04:16:34 +00:00
..

arraydeque

build status crates.io docs.rs

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

This crate is inspired by bluss/arrayvec

Documentation

Usage

First, add the following to your Cargo.toml:

[dependencies]
arraydeque = "0.5"

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:

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

Example

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);

    deque.push_back(1);
    deque.push_back(2);
    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);
}

Changelog

  • 0.5.1 Make ArrayDeque::new() a const fn.

  • 0.5.0 Support consnt generic capacity. Remove use_generic_array feature.

  • 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.

Contribution

All kinds of contribution are welcomed.

  • Issues. 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.

License

Licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)