reflect 0.0.1

The "but I thought Rust doesn't have reflection?" memorial brand new way of defining procedural macros.
Documentation
pub trait Array<T> {
    #[doc(hidden)]
    fn first(&self) -> T;
    #[doc(hidden)]
    fn to_vec(&self) -> Vec<T>;
}

macro_rules! impl_array {
    ($($n:tt)*) => {
        $(
            impl<T: Clone> Array<T> for [T; $n] {
                fn first(&self) -> T {
                    self[0].clone()
                }
                fn to_vec(&self) -> Vec<T> {
                    <[_]>::to_vec(self)
                }
            }
        )*
    }
}

impl_array!(1 2 3 4 5 6 7 8 9 10);