beet_flow_macros 0.0.6

Bevy Everywhere
Documentation
use extend::ext;
use proc_macro2::TokenStream;
use quote::quote;
use syn::Field;
use syn::Fields;

#[ext]
pub impl Fields {
	fn into_named(self) -> Vec<(TokenStream, Field)> {
		match self {
			Fields::Unit => Vec::new(),
			Fields::Named(fields) => fields
				.named
				.into_iter()
				.map(|f| {
					let ident = &f.ident.as_ref().unwrap();
					(quote! {#ident}, f)
				})
				.collect(),
			Fields::Unnamed(fields) => fields
				.unnamed
				.into_iter()
				.enumerate()
				.map(|(i, f)| {
					let ident = syn::Index::from(i);
					(quote! {#ident}, f)
				})
				.collect(),
		}
	}
}