pub trait GenPos<const DIMS: usize>: Copy + Debug + Eq + Hash + Ord + Sized + From<[Self::Val; DIMS]> + Into<[Self::Val; DIMS]> + TryAdd<Output = Self> + TryMul<Self::Val, Output = Self> {
type Val: Int;
type Axis: GenAxis<DIMS>;
const ZERO: Self;
const MIN: Self;
const MAX: Self;
// Provided methods
fn zero() -> Self { ... }
fn as_array(self) -> [Self::Val; DIMS] { ... }
fn into_iter(self) -> IntoIter<Self::Val, DIMS> { ... }
}