use syn::spanned::Spanned;
use super::get_doc_literals;
pub struct BuilderDef {
pub index: usize,
pub attr_span: proc_macro2::Span,
pub docs: Vec<syn::Expr>,
}
mod keyword {
syn::custom_keyword!(builder);
}
impl BuilderDef {
pub fn try_from(
attr_span: proc_macro2::Span,
index: usize,
item: &mut syn::Item,
) -> syn::Result<Self> {
let item = if let syn::Item::Impl(item) = item {
item
} else {
let msg = "Invalid mashin::builder, expected struct";
return Err(syn::Error::new(item.span(), msg))
};
let docs = get_doc_literals(&item.attrs);
Ok(Self { index, attr_span, docs })
}
}