12 releases (2 stable)
new 1.2.7 | Jan 3, 2025 |
---|---|
1.1.0 | Nov 9, 2024 |
1.0.0-beta.5 | Oct 22, 2024 |
0.16.12 | Sep 7, 2024 |
0.1.0 | Nov 28, 2023 |
#478 in Data structures
200 downloads per month
Used in 5 crates
(2 directly)
31KB
899 lines
Run length encoding library.
There are many mergeable types. By merging them together we can get a more compact representation of the data.
For example, in many cases, [0..5, 5..10]
can be merged into 0..10
.
RleVec
RleVec is a vector that can be compressed using run-length encoding.
A T value may be merged with its neighbors. When we push new element, the new value may be merged with the last element in the array. Each value has a length, so there are two types of indexes:
- (merged) It refers to the index of the merged element.
- (atom) The index of substantial elements. It refers to the index of the atom element.
By default, we use atom index in RleVec.
- len() returns the number of atom elements in the array.
- get(index) returns the atom element at the index.
- slice(from, to) returns a slice of atom elements from the index from to the index to.
Dependencies
~0.5–0.9MB
~19K SLoC