use proc_macro2::TokenStream;
use quote::ToTokens;
use syn::DeriveInput;
use crate::options;
macro_rules! emit_impl_or_error {
($e:expr) => {
match $e {
Ok(val) => val.into_token_stream(),
Err(err) => err.write_errors(),
}
};
}
pub fn from_meta(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FromMetaOptions::new(input))
}
pub fn from_attributes(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FromAttributesOptions::new(input))
}
pub fn from_derive_input(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FdiOptions::new(input))
}
pub fn from_field(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FromFieldOptions::new(input))
}
pub fn from_type_param(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FromTypeParamOptions::new(input))
}
pub fn from_variant(input: &DeriveInput) -> TokenStream {
emit_impl_or_error!(options::FromVariantOptions::new(input))
}