vbsp_derive/
lib.rs

1use quote::quote;
2use syn::{parse_macro_input, DeriveInput};
3
4mod entity;
5
6#[proc_macro_derive(Entity, attributes(entity))]
7pub fn derive_entity(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
8    derive_wrapper(input, entity::derive_entity)
9}
10
11fn derive_wrapper<F: Fn(DeriveInput) -> Result<proc_macro2::TokenStream, &'static str>>(
12    input: proc_macro::TokenStream,
13    derive: F,
14) -> proc_macro::TokenStream {
15    match derive(parse_macro_input!(input as DeriveInput)) {
16        Ok(tokens) => tokens.into(),
17        Err(e) => quote!(compile_error!(#e)).into(),
18    }
19}