Expand description
A fixed size double-ended queue that Deref
s 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§
- fsdeq
- Creates a
FixedSliceDeque
containing the arguments.
Structs§
- Fixed
Slice Deque - A fixed size double-ended queue that derefs into a slice. It maintains the size by poping out of bounds items in inserting operations.