use crate::{fields::*, *};
pub struct Union {
pub attributes: Vec<Attribute>,
pub visibility: Visibility,
pub identifier: Ident,
pub generics: Generics,
pub fields: Vec<NamedField>,
}
impl Union {
pub fn new(input: DeriveInput) -> Self {
let mut fields: Vec<NamedField> = Vec::new();
if let syn::Data::Union(new_input) = input.data {
let possibly_named_fields = new_input.fields;
for field in possibly_named_fields.named {
fields.push(NamedField::new(field));
}
} else {
panic!("Only structs may be parsed into StructWithUnnamedFields");
}
Self {
attributes: input.attrs,
visibility: input.vis,
identifier: input.ident,
generics: input.generics,
fields,
}
}
}