pub trait ShiftLeft {
type ShiftedLeft;
fn shift_left(self) -> Self::ShiftedLeft;
}
pub trait ShiftRight {
type ShiftedRight;
fn shift_right(self) -> Self::ShiftedRight;
}
pub trait SwapStartEnd {
type Output;
fn swap(self) -> Self::Output;
}
pub trait Reverse {
type Output;
fn reverse(self) -> Self::Output;
}
pub trait StatefulProcessor<T> {
fn process(&mut self, data: T) -> T;
}
pub trait InPlaceStatefulProcessor<T, E> {
fn process(&mut self, data: &mut T) -> Result<(), E>;
}
pub trait Processor<T> {
fn process(data: T) -> T;
}
pub trait InPlaceProcessor<T, E> {
fn process(data: &mut T)->Result<(), E>;
}
pub trait StatefulTransformProcessor<I, O> {
fn process(&self, data: I) -> O;
}
pub trait TransformProcessor<I, O> {
fn process(data: I) -> O;
}
pub trait SwapArbitraryProcessors<const I: usize, const J: usize> where Self: Sized {
type SwappedOutput;
fn swap_processors(self) -> Self::SwappedOutput;
}