Crate from_enum

source ·
Expand description

This crate provides a derive macro FromEnum to easily generate conversion impls to extract an enum variant’s value from a newtype-style enum.

This is most useful when writing generic functions that can operate on any variant’s inner type.


# #[allow(dead_code)]
enum Animal {

fn handle_animal<T: FromEnum<Animal> + Debug>(animal: &Animal) {
    match FromEnum::from_enum(animal) {
        Some(params) => println!("Found my animal {:?}", params),
        None => println!("This is not my animal"),

# #[derive(Debug)]
# struct DogParams;
# struct CatParams;
# fn main() {
let animal = Animal::Dog(DogParams);
# }


  • Attempts to match the enum E to find a variant with a single field of type Self.

Derive Macros§