polished-css-macros 0.1.0

Procedural macros which support the development of a library crate `polished-css`.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use syn::{DataEnum, Fields, FieldsUnnamed, Ident, Variant};

use super::get_last_path_segment;

pub fn get_enum_variants(data_enum: &DataEnum) -> Vec<&Variant> {
    data_enum.variants.iter().collect()
}

pub fn get_enum_variant_associated_value_type_ident(variant: &Variant) -> Option<&Ident> {
    if let Fields::Unnamed(FieldsUnnamed { unnamed, .. }) = &variant.fields {
        if unnamed.len() == 1 {
            if let Some(field) = unnamed.iter().next() {
                return get_last_path_segment(field);
            }
        }
    }
    None
}