enum_builder

Crates.ioenum_builder
lib.rsenum_builder
version0.1.6
created_at2025-07-05 10:54:35.47831+00
updated_at2025-07-05 17:46:28.696623+00
descriptionSimple macros that allow building enum types from variants that can be defined in multiple dispersed files in the crate.
homepagehttps://github.com/garfunkel/enum_builder
repositoryhttps://github.com/garfunkel/enum_builder
max_upload_size
id1738956
size17,823
Simon Allen (garfunkel)

documentation

https://docs.rs/enum_builder

README

enum_builder

Simple macros that allow building enum types from variants that can be defined in multiple dispersed files in the crate.

Crates.io Documentation License GitHub

Example

main.rs

mod animals;

use animals::*;

#[enum_builder]
enum Animal {}

// expanded result
// enum Animal {
//     Dog(Dog),
//     Cow(Cow),
//     Fish(Fish),
// }

animals.rs

#[enum_builder_variant(Animal)]
struct Dog {}

#[enum_builder_variant(Animal)]
struct Cow {}

#[enum_builder_variant(Animal)]
struct Fish {}

Tips

It can be very useful to combine this crate with the enum_dispatch crate, to allow for a simple "plugin" architecture without the overhead of dynamic dispatch. When doing this, take care to note that the order of macros is important, as enum_builder must be used before enum_dispatch.

Example

#[enum_builder]
#[enum_dispatch]
enum Animal {}
Commit count: 0

cargo fmt