Skip to main content

nekolib/traits/
elastic_slice.rs

1pub 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}