Proofs that there is a type-safe projection from a type T to another type U.
Proofs that there is a type-safe projection from a type T to another type U. It requires that: (a) both T and U are Products for which a LabelledGeneric can be derived (e.g., case classes), (b) all members of U have a corresponding member in T that has both the same name and type.
the original type T
the projected type U
shapeless' Record representation of T
the projection of T using the keys of U
shapeless' Record representation of U
the values of U as an HList
the keys of U as an HList
the LabelledGeneric derived for T
the LabelledGeneric derived for U
the keys of U
selects all the keys of U from T
selects all the values of LabeledGeneric[U]
proof that U and the projection of T have the same type
allows for traversing the keys of U
a projection if it exists