#enums #const #static #lazy-evaluation #macro

no-std enumeraties

Static properties on enum variants

1 unstable release

0.1.0 Mar 9, 2022

#25 in #lazy

Apache-2.0

17KB
270 lines

Enumeraties

Enumeration types with Properties

This crate provides a macro to add static, const, or lazy-initialized properties to enum variants.

This is a variation on the enum_properties crate. It extends it and allows additionally to define multiple property structs onto the same enum and adds support for static (instead of const) properties as well as lazily initialized properties. However, this additional features set comes with a syntax that is a bit more verbose, hence, if you just need a single const-initialized property, you might find enum_properties more concise. Nevertheless, you can also combine this crate with enum_properties using the best of both as shown in the enum_props_combo example.

See the props macro for more details.

Example

use enumeraties::props;

// A property struct
struct Prop { name: &'static str }

// An enum
enum Foo {A}

// Defining `Prop` on `Foo` via Deref
props! {
    impl Deref for Foo as const Prop {
        Self::A => {
            name: "Foo",
        }
    }
}

// Accessing the property on `Foo`
assert_eq!(Foo::A.name, "Foo");

Dependencies

~10KB