pub trait VectorSpace<T> { type Field: Field<Elem = T>; // Required method fn field(&self) -> &Self::Field; // Provided method fn rank(&self) -> usize { ... } }