Shapeless - verwandelt eine Fallklasse in eine andere mit Feldern in anderer Reihenfolge

Ich denke an etwas Ähnliches wieSicheres Kopieren von Feldern zwischen Fallklassen verschiedener Typen aber mit neu geordneten Feldern, d. h.

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

Und ich hätte gerne etwas, um ein @ zu drehA(3, 4) in einB(4, 3) - Shapeless 'LabelledGeneric fällt mir jedoch ein

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

Ergebnisse in

<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)))
                                                           ^

Wie kann ich die Felder im Datensatz neu anordnen (?), Damit dies mit einem Minimum an Kochfeldern funktioniert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage