Expand description

This crate provides several macros for deriving some useful methods for unitary enums (i.e. enums where variants do not have payloads) and unary enums.

Crate features

  • "std" Enabled by default. Disable to make the library #![no_std].

Using with and without macro_attr!

All of the macros are designed to be used with the macro-attr-2018 crate, though they can be used independent of it. The following:

macro_attr! {
    #[derive(Copy, Clone, Debug, IterVariants!(Vars))]
    enum ItAintRight { BabeNo, NoNo, BoyBoy }
}

can also be written as

#[derive(Copy, Clone, Debug)]
enum ItAintRight { BabeNo, NoNo, BoyBoy }

IterVariants! { (Vars) enum ItAintRight { BabeNo, NoNo, BoyBoy } }

Macros

Derives Display for an unitary enum, which outputs the name of the variant.

Derives From<T> for each variant’s payload, assuming all variants are unary.

Derives FromStr for an unitary enum. It requires an exact match of the variant name.

Derives a method for an unary enum returning a borrowed pointer to the inner value, cast to a trait object.

Derives iter_variant_names() for an unitary enum, which returns an iterator over the string names of the variants of the enum in lexical order.

Derives iter_variants() for an unitary enum, which returns an iterator over the variants of the enum in lexical order.

Derives next_variant(&self) for an unitary enum, which returns the next variant, or None when called for the last.

Derives prev_variant(&self) for an unitary enum, which returns the previous variant, or None when called for the first.

Structs

The FromStr derived implementations error type.