opengauss_derive/
enums.rs

1use syn::{Error, Fields, Ident};
2
3use crate::overrides::Overrides;
4
5pub struct Variant {
6    pub ident: Ident,
7    pub name: String,
8}
9
10impl Variant {
11    pub fn parse(raw: &syn::Variant) -> Result<Variant, Error> {
12        match raw.fields {
13            Fields::Unit => {}
14            _ => {
15                return Err(Error::new_spanned(
16                    raw,
17                    "non-C-like enums are not supported",
18                ))
19            }
20        }
21
22        let overrides = Overrides::extract(&raw.attrs)?;
23        Ok(Variant {
24            ident: raw.ident.clone(),
25            name: overrides.name.unwrap_or_else(|| raw.ident.to_string()),
26        })
27    }
28}