Crates.io | fixed-slice-deque |
lib.rs | fixed-slice-deque |
version | 0.1.0-beta2 |
source | src |
created_at | 2022-09-13 14:44:40.474864 |
updated_at | 2022-10-28 08:56:56.613707 |
description | A fixed size deque implementation |
homepage | https://github.com/danielsanchezq/fixed-slice-deque |
repository | https://github.com/danielsanchezq/fixed-slice-deque |
max_upload_size | |
id | 664628 |
size | 76,206 |
[dependencies]
fixed-slice-deque = "0.1.0-beta2"
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.
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.
This project is licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in SliceDeque by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.