typenaming 0.3.0

Infrastructure to derive name of type
Documentation
mod level1 {
    mod level2 {
        #[test]
        fn crate_module() {
            use ::typenaming::TypeNameable;
            #[derive(TypeNameable)]
            struct A {}
            let type_name = dbg!(A::type_info());
            assert_eq!("A", type_name.type_name());
            assert_eq!(Some("typenaming"), type_name.crate_name().as_deref());
            assert_eq!(
                Some("crate_module::level1::level2"),
                type_name.crate_module().as_deref()
            );
            assert_eq!(0, type_name.generics().len());
            assert_eq!(
                &Some(rustc_version::version().unwrap()),
                type_name.rustc_version()
            );
        }
    }
}