data_bucket_derive 0.3.17

DataBucket is container for WorkTable
Documentation
use proc_macro2::TokenStream;
use syn::spanned::Spanned;
use syn::{Item, ItemEnum, ItemStruct};

pub enum ParsedItem {
    Struct(ItemStruct),
    Enum(ItemEnum),
}

pub struct Parser;

impl Parser {
    pub fn parse(input: &TokenStream) -> syn::Result<ParsedItem> {
        match syn::parse2::<Item>(input.clone()) {
            Ok(Item::Struct(data)) => Ok(ParsedItem::Struct(data)),
            Ok(Item::Enum(data)) => Ok(ParsedItem::Enum(data)),
            Ok(item) => Err(syn::Error::new_spanned(
                item,
                "SizeMeasure supports structs and fieldless enums",
            )),
            Err(err) => Err(syn::Error::new(input.span(), err.to_string())),
        }
    }
}