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.
§Example
# #[allow(dead_code)]
#[derive(FromEnum)]
enum Animal {
Dog(DogParams),
Cat(CatParams),
}
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);
handle_animal::<DogParams>(&animal);
# }
Traits§
- Attempts to match the enum
E
to find a variant with a single field of typeSelf
.