pub trait Shape { // Required methods fn n_rows(&self) -> usize; fn n_cols(&self) -> usize; // Provided method fn shape(&self) -> (usize, usize) { ... } }