savory_elements_derive/
lib.rs1#![forbid(unsafe_code)]
2
3#[macro_use]
4extern crate darling;
5extern crate proc_macro2;
6#[macro_use]
7extern crate quote;
8extern crate syn;
9
10use darling::FromDeriveInput;
11use proc_macro::TokenStream;
12
13pub(crate) mod element;
14
15#[proc_macro_derive(Element, attributes(element))]
16pub fn derive_model(input: TokenStream) -> TokenStream {
17 let input = syn::parse_macro_input!(input as syn::DeriveInput);
18 let element_impl = match element::Element::from_derive_input(&input) {
19 Ok(val) => val,
20 Err(err) => panic!("{}", err),
21 };
22 (quote! {
23 #element_impl
24 })
25 .into()
26}