use crate::VariantsDataStructAttrMeta;
pub(crate) struct VariantsDataStructMeta {
pub(crate) attrs: Vec<syn::Attribute>,
pub(crate) vis: syn::Visibility,
pub(crate) name: syn::Ident,
pub(crate) variants_tys_attrs: Vec<syn::Attribute>,
}
impl VariantsDataStructMeta {
pub(crate) fn resolve(
attr_meta: VariantsDataStructAttrMeta,
enum_ident: &syn::Ident,
enum_vis: &syn::Visibility,
) -> VariantsDataStructMeta {
let VariantsDataStructAttrMeta {
attrs,
vis,
name,
variants_tys_attrs,
} = attr_meta;
let vis = match vis {
Some(vis) => vis,
None => enum_vis.clone(),
};
let name = match name {
Some(name) => name,
None => syn::Ident::new(&format!("{enum_ident}VariantsData"), enum_ident.span()),
};
VariantsDataStructMeta {
attrs,
vis,
name,
variants_tys_attrs,
}
}
}