reflect 0.0.9

The "but I thought Rust doesn't have reflection?" memorial brand new way of defining procedural macros.
Documentation
#![allow(clippy::wildcard_imports)]

use quote::quote;
use reflect::*;

library! {
    use simple {
        trait Simple {
            fn simple();
        }

        trait Bound {}
    }
}

fn derive(ex: Execution) {
    ex.make_trait_impl(RUNTIME::simple::Simple, ex.target_type(), |block| {
        block.make_function(RUNTIME::simple::Simple::simple, |make_function| {
            make_function.unit()
        });
    });
}

#[test]
fn test_generics() {
    let input = quote! {
        struct Generics<'a, 'b,  T: ::simple::Bound + Send> where 'b: 'a {
            pub param: &'a &'b T
        }
    };

    let expected = quote! {
        impl<'a, 'b, T>  ::simple::Simple for Generics<'a, 'b, T>
            where
                T: ::simple::Bound + Send,
                'b: 'a,
        {
            fn simple() {
                let __v0 = ();
                __v0
            }
        }
    };

    let output = reflect::derive(input, derive);
    assert_eq!(output.to_string(), expected.to_string());
}