1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
pub trait TY<A>{}

macro_rules! ty_impls {
    ($($t:ty),+) => {
        $(
            impl TY<$t> for $t{}
        )+
    };
}

ty_impls!(u8,u16,u32,u64,u128,i8,i16,i32,i64,i128,f32,f64,String,bool,isize,usize);

impl<A> TY<Vec<A>> for Vec<A> where A:TY<A>{}
impl<'a,A> TY<&'a A> for &'a A where A:TY<A>{}
impl<A> TY<*const A> for *const A where A:TY<A>{}
impl<A> TY<*mut A> for *mut A where A:TY<A>{}