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;
unsafe fn with_label_unsafe(label: L, len: usize) -> Self;
fn get_label(&self) -> &L;
unsafe fn get_label_unsafe(&self) -> &mut L;
unsafe fn get_unsafe(&self, idx: usize) -> &mut E;
}
pub trait LabelledArrayMut<E, L>: LabelledArray<E, L> {
fn get_label_mut(&mut self) -> &mut L;
}
pub trait LabelledArrayRefMut<E, L>: LabelledArray<E, L> {
fn get_label_mut(&mut self) -> Option<&mut L>;
}
pub trait DefaultLabelledArray<E, L>: LabelledArray<E, L>
where
E: Default,
{
fn with_len(label: L, len: usize) -> Self;
}