Expand description

A fixed size double-ended queue that Derefs into a slice. For keeping the fixed queue size items pushed out of bounds are pop and returned in inserting operations.

Example:

Initialize state, empty, with fixed size of 3

`X = None`
+---+---+---+
| X | X | X |
+---+---+---+

Pushing 1 to the back, since it is empty, 1 is the only item in the deque

=> push_back(1)

+---+---+---+
| 1 | X | X |
+---+---+---+

Push 2 to the front (left)

=> push_front(2)

+---+---+---+
| 2 | 1 | X |
+---+---+---+

Push again to the back, a single 3. The deque now is full

=> push_back(3)

+---+---+---+
| 2 | 1 | 3 |
+---+---+---+

We try to add a new item at the back, but we would have one extra, the first item (2) is pop to the left and returned. We keep the elements and the fixed size

=> push_back(4)

+---+---+---+
| 1 | 3 | 4 | => return Some(2)
+---+---+---+

The same happens when pushing to the front again, the back-most (right) item is pop and returned

=> push_front(5)

+---+---+---+
| 5 | 1 | 3 | => return Some(4)
+---+---+---+

It is implemented as a wrapper over SliceDeque slice-deque crate

Almost every orignal SliceDeque method is wrapped. Please refer to it’s twin method documentation for internal functionality.

Macros

Creates a FixedSliceDeque containing the arguments.

Structs

A fixed size double-ended queue that derefs into a slice. It maintains the size by poping out of bounds items in inserting operations.