1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
use proc_macro::{self, TokenStream};
use quote::ToTokens;
use syn::{parse_macro_input, DeriveInput};
mod implementation;
#[proc_macro_derive(Typesense, attributes(typesensei))]
pub fn typesense(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
match implementation::implement(input) {
Ok(typesense) => typesense.to_token_stream().into(),
Err(e) => e.write_errors().into(),
}
}