Module behavior

Source
Expand description

Behavior semantics for ArrayDeque.

ArrayDeque provides two different behaviors, Saturating and Wrapping, determining whether to remove existing element automatically when pushing to a full deque.

The behavior is indicated by a marker type parameter of ArrayDeque, which defaults to Saturating.

§Saturating

Pushing any element when ArrayDeque is full will directly return an Err(CapacityError) containing the element attempting to push, leaving the ArrayDeque unchanged.

use arraydeque::{ArrayDeque, Saturating, CapacityError};

let mut tester: ArrayDeque<_, 2, Saturating> = ArrayDeque::new();

assert_eq!(tester.push_back(1), Ok(()));
assert_eq!(tester.push_back(2), Ok(()));
assert_eq!(tester.push_back(3), Err(CapacityError { element: 3 }));

§Wrapping

Pushing any element when ArrayDeque is full will pop an element at the other side to spare room.

use arraydeque::{ArrayDeque, Wrapping};

let mut tester: ArrayDeque<_, 2, Wrapping> = ArrayDeque::new();

assert_eq!(tester.push_back(1), None);
assert_eq!(tester.push_back(2), None);
assert_eq!(tester.push_back(3), Some(1));

Structs§

Saturating
Behavior for ArrayDeque that specifies saturating write semantics.
Wrapping
Behavior for ArrayDeque that specifies wrapping write semantics.

Traits§

Behavior
Marker trait for indicating behaviors of ArrayDeque.