ipld_car/bounded_reader/
traits.rs1use crate::bounded_reader::error::BoundedReaderErr;
2
3use std::ops::Range;
4
5pub trait Bounded {
6 fn bounds(&self) -> Range<u64>;
8
9 fn bound_len(&self) -> u64;
11
12 fn sub<R: BoundedIndex<Self>>(&self, range: R) -> Result<Self, BoundedReaderErr>
14 where
15 Self: Sized;
16
17 fn clamped_sub<R: BoundedIndex<Self>>(&self, range: R) -> Self
18 where
19 Self: Sized;
20}
21
22pub trait BoundedIndex<T> {
24 fn get(self, bounded: &T) -> Result<T, BoundedReaderErr>;
25 fn clamped_get(self, bounded: &T) -> T;
26}
27
28pub trait CloneAndRewind {
29 fn clone_and_rewind(&self) -> Self;
31}