braid_core/vendor/rle/
mod.rs1use std::fmt::Debug;
2
3pub use append_rle::AppendRle;
4pub use splitable_span::*;
5pub use merge_iter::*;
6use std::ops::Range;
7
8mod splitable_span;
9mod merge_iter;
10mod append_rle;
11pub mod zip;
12pub mod take_max_iter;
13pub mod intersect;
14pub mod rlerun;
15pub use rlerun::{RleRun, RleDRun};
19
20pub trait Searchable {
21 type Item: Copy + Debug;
22
23 fn get_offset(&self, loc: Self::Item) -> Option<usize>;
29
30 fn at_offset(&self, offset: usize) -> Self::Item;
33}
34
35pub trait HasRleKey {
36 fn rle_key(&self) -> usize;
37}
38
39impl<T> HasRleKey for &T where T: HasRleKey {
40 fn rle_key(&self) -> usize {
41 (*self).rle_key()
42 }
43}
44
45impl HasRleKey for Range<usize> {
46 fn rle_key(&self) -> usize {
47 self.start
48 }
49}
50
51impl HasRleKey for Range<u32> {
52 fn rle_key(&self) -> usize {
53 self.start as _
54 }
55}