gear_common_codegen/
lib.rs1#![no_std]
5
6#[macro_use]
7extern crate quote;
8extern crate proc_macro;
9extern crate syn;
10
11use proc_macro::TokenStream;
12use syn::DeriveInput;
13
14#[proc_macro_derive(RuntimeReason)]
16pub fn derive_runtime_reason(input: TokenStream) -> TokenStream {
17 let ast: DeriveInput = syn::parse(input).unwrap();
18 let name = &ast.ident;
19
20 quote! { impl RuntimeReason for #name {} }.into()
21}
22
23#[proc_macro_derive(SystemReason)]
25pub fn derive_system_reason(input: TokenStream) -> TokenStream {
26 let ast: DeriveInput = syn::parse(input).unwrap();
27 let name = &ast.ident;
28
29 quote! { impl SystemReason for #name {} }.into()
30}