MCPcopy Index your code
hub / github.com/andylokandy/arraydeque

github.com/andylokandy/arraydeque @0.4.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.4.5 ↗ · + Follow
153 symbols 460 edges 10 files 32 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

arraydeque

build status crates.io docs.rs

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

This crate is inspired by bluss/arrayvec

Documentation

Usage

First, add the following to your Cargo.toml:

[dependencies]
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:

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

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

License

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

Extension points exported contracts — how you extend this code

RangeArgument (Interface)
RangeArgument** is implemented by Rust's built-in range types, produced by range syntax like `..`, `a..`, `..b` or `c..d [4 …
src/range.rs
Index (Interface)
(no doc) [5 implementers]
src/array.rs
Behavior (Interface)
Behavior semantics for `ArrayDeque`. `ArrayDeque` provides two different behaviors, `Saturating` and `Wrapping`, determ [2 …
src/behavior.rs
Array (Interface)
Trait for fixed size arrays. [1 implementers]
src/array.rs

Core symbols most depended-on inside this repo

len
called by 48
src/lib.rs
copy
called by 38
src/lib.rs
push_back
called by 37
src/lib.rs
tail
called by 29
src/lib.rs
wrap_add
called by 18
src/lib.rs
set_len
called by 17
src/lib.rs
into_iter
called by 15
src/lib.rs
extend_back
called by 11
src/lib.rs

Shape

Method 95
Function 38
Class 14
Interface 4
Enum 2

Languages

Rust100%

Modules by API surface

src/lib.rs108 symbols
src/maybe_uninit/nodrop.rs11 symbols
src/array.rs11 symbols
src/range.rs5 symbols
src/maybe_uninit/maybe_uninit_nodrop.rs4 symbols
src/maybe_uninit/maybe_uninit.rs4 symbols
build.rs4 symbols
src/error.rs3 symbols
src/behavior.rs3 symbols

For agents

$ claude mcp add arraydeque \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact