enumx 0.1.0

Anonymous enum type in rust.
Documentation
// See the COPYRIGHT file at the top-level directory of this distribution.
// Licensed under MIT license <LICENSE-MIT or http://opensource.org/licenses/MIT>

/// Recursive descent converting
pub enum LR<L,R> {
    L(L), // CAR
    R(R), // CDR
}

/// Placeholder in the last `R` variant of nested `LR`s.
pub enum Enum0 {}

/// Anonymous `enum`.
pub trait EnumX {
    type LR;
    fn from_lr( lr: Self::LR ) -> Self;
    fn into_lr( self ) -> Self::LR;
}

use enumx_derive::EnumXDerives;

macro_rules! enumx_types {
    ($( $enum:ident<$($err:ident),+>{ $($variant:ident)+ } )+) => {$(
        #[derive( EnumXDerives )]
        #[derive( Debug,PartialEq,Eq,PartialOrd,Ord )]
        pub enum $enum<$($err),+> {
            $( $variant( $err )),+
        }

        impl<$($err),+> $enum<$($err),+> {$(
            pub fn $variant( e: $err ) -> Self {
                $enum::$variant( e )
            }
        )+}
    )+}
}

enumx_types! {
     Enum1<E0>{ _0 }
     Enum2<E0,E1>{ _0 _1 }
     Enum3<E0,E1,E2>{ _0 _1 _2 }
     Enum4<E0,E1,E2,E3>{ _0 _1 _2 _3 }
     Enum5<E0,E1,E2,E3,E4>{ _0 _1 _2 _3 _4 }
     Enum6<E0,E1,E2,E3,E4,E5>{ _0 _1 _2 _3 _4 _5 }
     Enum7<E0,E1,E2,E3,E4,E5,E6>{ _0 _1 _2 _3 _4 _5 _6 }
     Enum8<E0,E1,E2,E3,E4,E5,E6,E7>{ _0 _1 _2 _3 _4 _5 _6 _7 }
     Enum9<E0,E1,E2,E3,E4,E5,E6,E7,E8>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 }
     Enum10<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 }
     Enum11<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 }
     Enum12<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 }
     Enum13<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 }
     Enum14<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 }
     Enum15<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 }
     Enum16<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 }
     Enum17<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 }
     Enum18<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 }
     Enum19<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 }
     Enum20<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 }
     Enum21<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 }
     Enum22<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 }
     Enum23<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 }
     Enum24<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 }
     Enum25<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 }
     Enum26<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 }
     Enum27<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 }
     Enum28<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 }
     Enum29<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 }
     Enum30<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 }
     Enum31<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29,E30>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 }
     Enum32<E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18,E19,E20,E21,E22,E23,E24,E25,E26,E27,E28,E29,E30,E31>{ _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 }
}