pub trait FlattenedLayout { type Index; // Required methods fn len(&self) -> usize; fn offset(&self, idx: Self::Index) -> usize; // Provided method fn is_empty(&self) -> bool { ... } }