nekolib/traits/
elastic_slice.rs1pub trait ExpandFront {
2 fn expand_front(&mut self);
3}
4
5pub trait ExpandBack {
6 fn expand_back(&mut self);
7}
8
9pub trait ShrinkFront {
10 fn shrink_front(&mut self);
11}
12
13pub trait ShrinkBack {
14 fn shrink_back(&mut self);
15}
16
17pub trait ElasticSlice {
18 fn reset(&mut self);
19 fn full_len(&self) -> usize;
20 fn start(&self) -> usize;
21 fn end(&self) -> usize;
22 fn len(&self) -> usize { self.end() - self.start() }
23 fn is_empty(&self) -> bool { self.start() == self.end() }
24}
25
26pub trait SliceHash {
27 type Salt;
28 type Hashed;
29 fn hash(&self, x: Self::Salt) -> Self::Hashed;
30}