enum_convert 0.2.0

A Rust procedural macro library for deriving automatic conversions between enum variants
Documentation
use enum_convert::EnumFrom;

enum Source {
    Tuple(i32, i32),
}

#[derive(EnumFrom)]
#[enum_from(Source)]
enum Target {
    #[enum_from(Source::Tuple)]
    Struct {
        #[enum_from(Source::Tuple.1)]
        a: i64,
        #[enum_from(Source::Tuple.0)]
        b: i32,
    },
}

fn main() {
    assert!(matches!(
        Target::from(Source::Tuple(1, 2)),
        Target::Struct { a, b } if a == 2 && b == 1,
    ));
}