fluvio-protocol-derive 0.3.1

Procedure macro to encode/decode fluvio protocol
Documentation
use crate::ast::prop::NamedProp;
use syn::{Fields, Generics, Ident, ItemStruct};

pub(crate) struct FluvioStruct {
    pub struct_ident: Ident,
    pub props: Vec<NamedProp>,
    pub generics: Generics,
}

impl FluvioStruct {
    pub fn from_ast(item: &ItemStruct) -> syn::Result<Self> {
        let struct_ident = item.ident.clone();
        let props: Vec<NamedProp> = if let Fields::Named(fields) = &item.fields {
            let mut prp = vec![];
            for field in fields.named.iter() {
                prp.push(NamedProp::from_ast(field)?);
            }
            prp
        } else {
            vec![]
        };
        let generics = item.generics.clone();

        Ok(FluvioStruct {
            struct_ident,
            props,
            generics,
        })
    }
}