use darling::FromVariant;
use darling::ast::Fields;
use darling::util::SpannedValue;
use syn::Ident;
use crate::types::OrdField;
#[derive(Debug, Clone, FromVariant)]
#[darling(attributes(ord))]
pub struct OrdVariant {
pub ident: Ident,
pub fields: Fields<OrdField>,
#[darling(default)]
pub rank: Option<SpannedValue<i32>>,
}
impl OrdVariant {
pub fn effective_rank(&self, declaration_index: usize) -> i32 {
self.rank.as_ref().map_or(declaration_index as i32, |r| **r)
}
}