enum_traits_macros 4.0.0

Procedural macros adding functionality to enums. Derives traits from the crate `enum_traits`
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::util;
use core::cmp;
use proc_macro2::TokenStream;

pub fn gen_impl(item: syn::ItemEnum) -> TokenStream{
	let (impl_generics,ty_generics,where_clause) = item.generics.split_for_impl();
	let ident = &item.ident;

	//Determine which type to use from the number of variants.
	let ty = util::minimum_type_from_value(cmp::max(item.variants.len(),1)-1);

	quote!{
		#[automatically_derived]
		impl #impl_generics ::enum_traits::Index for #ident #ty_generics #where_clause{
			type Type = #ty;
		}
	}
}