enumerare-macros 0.1.0

Utilities for working with enums.
Documentation
mod helpers;
mod macros;

use proc_macro::TokenStream;
use syn::{parse_macro_input, DeriveInput};

use helpers::to_compile_err;
use macros::{derive_cycle, derive_default, derive_sized_enum};

#[proc_macro_derive(Cycle)]
pub fn derive_cycle_macro(input: TokenStream) -> TokenStream {
	derive_cycle(&parse_macro_input!(input as DeriveInput))
		.unwrap_or_else(to_compile_err)
		.into()
}

#[proc_macro_derive(DefaultEnum, attributes(default))]
pub fn derive_default_macro(input: TokenStream) -> TokenStream {
	derive_default(&parse_macro_input!(input as DeriveInput))
		.unwrap_or_else(to_compile_err)
		.into()
}

#[proc_macro_derive(SizedEnum)]
pub fn derive_sized_enum_macro(input: TokenStream) -> TokenStream {
	derive_sized_enum(&parse_macro_input!(input as DeriveInput))
		.unwrap_or_else(to_compile_err)
		.into()
}