Shapeless - превратить класс дела в другой с полями в другом порядке

Я думаю сделать что-то похожее наБезопасное копирование полей между классами дел разных типов но с переупорядоченными полями, т.е.

case class A(foo: Int, bar: Int)
case class B(bar: Int, foo: Int)

И я хотел бы иметь что-то, чтобы повернутьA(3, 4) вB(4, 3) - бесформенныйLabelledGeneric приходит на ум, однако

LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))

результаты в

<console>:15: error: type mismatch;
 found   : shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.HNil]]
    (which expands to)  shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.HNil]]
 required: shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("bar")],Int],shapeless.::[shapeless.record.FieldType[shapeless.tag.@@[Symbol,String("foo")],Int],shapeless.HNil]]
    (which expands to)  shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("bar")],Int],shapeless.::[Int with shapeless.record.KeyTag[Symbol with shapeless.tag.Tagged[String("foo")],Int],shapeless.HNil]]
              LabelledGeneric[B].from(LabelledGeneric[A].to(A(12, 13)))
                                                           ^

Как переупорядочить поля в записи (?), Чтобы это работало с минимальным количеством шаблонов?

Ответы на вопрос(1)

Ваш ответ на вопрос