use syn::Variant;
use super::FieldsData;
use crate::attributes::SerdeVariantAttributes;
#[must_use]
pub(crate) struct VariantData<'a> {
variant: &'a Variant,
index: u32,
fields: FieldsData<'a>,
serde_attributes: SerdeVariantAttributes,
}
impl<'a> VariantData<'a> {
#[inline(always)]
pub(crate) const fn new(
variant: &'a Variant,
index: u32,
fields: FieldsData<'a>,
serde_attributes: SerdeVariantAttributes,
) -> Self {
Self {
variant,
index,
fields,
serde_attributes,
}
}
#[inline(always)]
pub(crate) const fn variant(&self) -> &'a Variant {
self.variant
}
#[must_use]
#[inline(always)]
pub(crate) const fn index(&self) -> u32 {
self.index
}
#[inline(always)]
pub(crate) const fn fields(&self) -> &FieldsData<'a> {
&self.fields
}
#[inline(always)]
pub(crate) const fn serde_attributes(&self) -> &SerdeVariantAttributes {
&self.serde_attributes
}
}