pub trait LabelledArray<E, L>: containers::CopyMap<usize, E> {
fn with_label<F>(label: L, len: usize, func: F) -> Self
where
F: FnMut(&mut L, usize) -> E;
fn get_label(&self) -> &L;
unsafe fn get_unchecked(&self, idx: usize) -> &E;
}
pub trait LabelledArrayMut<E, L>: LabelledArray<E, L> {
fn get_label_mut(&mut self) -> &mut L;
unsafe fn get_mut_unchecked(&mut self, idx: usize) -> &mut E;
}
pub trait DefaultLabelledArray<E, L>: LabelledArray<E, L>
where
E: Default,
{
fn with_len(label: L, len: usize) -> Self;
}