use darling::FromDeriveInput;
use proc_macro::{self, TokenStream};
use quote::quote;
use syn::{parse_macro_input, DeriveInput};
#[derive(FromDeriveInput)]
#[darling(attributes(from_env), forward_attrs(allow, doc, cfg))]
struct Opts {
prefix: String,
}
#[proc_macro_derive(FromEnv, attributes(jealousy))]
pub fn derive(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input);
let opts = Opts::from_derive_input(&input).expect("Wrong options");
let DeriveInput { ident, .. } = input;
let prefix = &opts.prefix;
let out = quote! {
impl FromEnv for #ident {
const PREFIX: &'static str = #prefix;
}
};
out.into()
}