extern crate proc_macro; use proc_macro::TokenStream; use quote::quote; use syn::{parse_macro_input, DeriveInput}; #[proc_macro_derive(LD)] pub fn derive_ld(input: TokenStream) -> TokenStream { let DeriveInput { ident, .. } = parse_macro_input!(input); quote! { impl crate::astreams::serde_ext::LDObject for #ident { fn from_iri(s: &str) -> Self { let mut ident = #ident::default(); ident.id = s.into(); ident } fn get_iri(&self) -> String { self.id.clone() } } } .into() }