enum-iterator
this is a direct copy of Chris Breeden's excellent blog "Creating an enum iterator using Macros 1.1", which was derived from David Tolnay's "MACROS 1.1 + SYN + QUOTE" talk.
i made a few changes as suggested by Chris as well as to update the code (proc_macros are no longer a "feature" requiring the "#![feature(proc_macro, proc_macro_lib)]" attribute).