enum_convert 0.2.0

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

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

enum Target {
    Tuple(i32, i32),
}

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