lotus_proc_macros 0.1.0

Lotus Proc Macros is a crate designed to store the 'Derive Macros' used in the Lotus project.
Documentation
extern crate proc_macro;
use quote::quote;
use syn::{parse_macro_input, DeriveInput};

pub fn derive_component_impl(token_stream: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let derive_input: DeriveInput = parse_macro_input!(token_stream as DeriveInput);
    let name: &syn::Ident = &derive_input.ident;

    let gen: proc_macro2::TokenStream = quote! {
        impl crate::core::ecs::component::Component for #name {
            fn as_any(&self) -> &dyn std::any::Any {
                return self;
            }

            fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
                return self;
            }
        }
    };
    return gen.into();
}