Crates.io | enumeraties |
lib.rs | enumeraties |
version | 0.1.0 |
source | src |
created_at | 2022-03-09 20:56:46.945873 |
updated_at | 2022-03-09 20:56:46.945873 |
description | Static properties on enum variants |
homepage | |
repository | https://github.com/cryptjar/enumeraties |
max_upload_size | |
id | 547158 |
size | 38,504 |
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.
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");