opengauss_derive/
enums.rs1use 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}