macro_types_helpers 0.3.0

An internal helper library for macro_types
Documentation
use macro_types::{generic::Generic, name::Name};
use macro_types_helpers::From;
use syn::{Attribute, Fields, FieldsNamed, Variant, WhereClause};

#[derive(From)]
#[from = "syn::Data"]
pub enum Data {
	#[from(unwrap = "syn::DataStruct..")]
	Struct { fields: Fields },
	#[from(unwrap = "syn::DataEnum..")]
	Enum {
		#[from = "into_iter,collect"]
		variants: Vec<Variant>,
	},
	#[from(unwrap = "syn::DataUnion..")]
	Union { fields: FieldsNamed },
}

#[derive(From)]
#[from = "syn::DeriveInput.."]
pub struct DeriveInput {
	pub attrs: Vec<Attribute>,
	pub ident: Name,
	pub generics: Generics,
	pub data: Data,
}

pub struct Generics {
	pub params: Vec<Generic>,
	pub where_clause: Option<WhereClause>,
}

impl From<syn::Generics> for Generics {
	fn from(value: syn::Generics) -> Self {
		let syn::Generics {
			params,
			where_clause,
			..
		} = value;
		Self {
			params: params
				.into_iter()
				.map(|x| x.into())
				.collect(),
			where_clause,
		}
	}
}

fn main() {}