pub trait LabelledArray<'a, E, L>: containers::Array<'a, E>
where
E: 'a,
{
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;
fn get_label_mut(&mut self) -> &mut L;
unsafe fn get_label_unsafe(&self) -> &mut L;
unsafe fn get_unsafe(&self, idx: usize) -> &mut E;
}
pub trait DefaultLabelledArray<'a, E, L>: LabelledArray<'a, E, L>
where
E: 'a + Default,
{
fn with_len(label: L, len: usize) -> Self;
}