pub trait GetPosition<T = f32, const N: usize = 3>{
// Required method
fn pos(&self) -> Vector<T, N>;
// Provided methods
fn x(&self) -> T
where Vector<T, N>: HaveX<T> { ... }
fn y(&self) -> T
where Vector<T, N>: HaveY<T> { ... }
fn z(&self) -> T
where Vector<T, N>: HaveZ<T> { ... }
fn w(&self) -> T
where Vector<T, N>: HaveW<T> { ... }
}