use crate::bounded_reader::error::BoundedReaderErr;
use std::ops::Range;
pub trait Bounded {
fn bounds(&self) -> Range<u64>;
fn bound_len(&self) -> u64;
fn sub<R: BoundedIndex<Self>>(&self, range: R) -> Result<Self, BoundedReaderErr>
where
Self: Sized;
fn clamped_sub<R: BoundedIndex<Self>>(&self, range: R) -> Self
where
Self: Sized;
}
pub trait BoundedIndex<T> {
fn get(self, bounded: &T) -> Result<T, BoundedReaderErr>;
fn clamped_get(self, bounded: &T) -> T;
}
pub trait CloneAndRewind {
fn clone_and_rewind(&self) -> Self;
}