Module arraydeque::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

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

Traits

Marker trait for indicating behaviors of ArrayDeque.