enumeraties

Crates.ioenumeraties
lib.rsenumeraties
version0.1.0
sourcesrc
created_at2022-03-09 20:56:46.945873
updated_at2022-03-09 20:56:46.945873
descriptionStatic properties on enum variants
homepage
repositoryhttps://github.com/cryptjar/enumeraties
max_upload_size
id547158
size38,504
(Cryptjar)

documentation

README

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");
Commit count: 22

cargo fmt