2 releases
0.1.0-beta2 | Oct 28, 2022 |
---|---|
0.1.0-beta1 | Sep 13, 2022 |
#1105 in Data structures
7,772 downloads per month
75KB
1.5K
SLoC
fixed-slice-deque
Add the library dependency
[dependencies]
fixed-slice-deque = "0.1.0-beta2"
Explanation:
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.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Dependencies
~240–460KB