use crate::dim::*;
use crate::NVec;
use crate::NVecMut;
pub trait V1<T>: NVec<D1, T> {}
impl<T, N: NVec<D1, T>> V1<T> for N {}
pub trait V2<T>: NVec<D2, T> {}
impl<T, N: NVec<D2, T>> V2<T> for N {}
pub trait V3<T>: NVec<D3, T> {}
impl<T, N: NVec<D3, T>> V3<T> for N {}
pub trait V4<T>: NVec<D4, T> {}
impl<T, N: NVec<D4, T>> V4<T> for N {}
pub trait V1Mut<T>: NVecMut<D1, T> {}
impl<T, N: NVecMut<D1, T>> V1Mut<T> for N {}
pub trait V2Mut<T>: NVecMut<D2, T> {}
impl<T, N: NVecMut<D2, T>> V2Mut<T> for N {}
pub trait V3Mut<T>: NVecMut<D3, T> {}
impl<T, N: NVecMut<D3, T>> V3Mut<T> for N {}
pub trait V4Mut<T>: NVecMut<D4, T> {}
impl<T, N: NVecMut<D4, T>> V4Mut<T> for N {}