Предположим, у меня есть два идентичных перечисления (не спрашивайте, почему):
enum Foo {
A,
B,
C,
D,
}
enum Bar {
A,
B,
C,
D,
}
Можно ли использовать макрос для автоматического преобразования между ними без необходимости писать этот утомительный код:
let f: Foo = match b {
Bar::A => Foo::A,
Bar::B => Foo::B,
Bar::C => Foo::C,
Bar::D => Foo::D,
};
Бонусные баллы: возможно ли сделать это для двух идентичных структур?
Редактировать: Пара разъяснений - по крайней мере одно из перечислений уже существует в коде и не может быть отредактировано (в моем случае это сгенерированный код, но он также может быть из внешнего ящика). Также я понимаю, что вы можете сделать это с макросами pro c, потому что они в принципе могут делать что угодно, но я ищу что-то попроще, если оно существует.
Если это невозможно, это тоже правильный ответ.