pub trait Translatable {
fn translate<I1, I2>(&self, win: I1, wout: I2) -> Option<Self>
where
Self: Sized,
I1: Iterator<Item = usize>,
I2: Iterator<Item = usize>;
fn translate_from_hashmap<'a>(
&'a self,
translation_table: HashMap<usize, usize>
) -> Option<Self>
where
Self: Sized + HasIO,
InputIterator<'a, Self>: Iterator<Item = usize>,
OutputIterator<'a, Self>: Iterator<Item = usize>,
{ ... }
fn translate_from_fn<'a>(
&'a self,
input_mapper: fn(_: usize) -> usize,
output_mapper: fn(_: usize) -> usize
) -> Option<Self>
where
Self: Sized + HasIO,
InputIterator<'a, Self>: Iterator<Item = usize>,
OutputIterator<'a, Self>: Iterator<Item = usize>,
{ ... }
}