Shapeless имеет аккуратный класс типов механизм порождения, который позволяет вам определять классы типов и получать автоматические порождения для любого класса типов.
Чтобы использовать механизм деривации в качестве пользователя класса типов, вы должны использовать следующий синтаксис
import MyTypeClass.auto._
что, насколько я понимаю, эквивалентно
import MyTypeClass.auto.derive
Проблема возникает, когда вы пытаетесь использовать несколько подобных классов типов в одной области видимости. Может показаться, что компилятор Scala учитывает только последнее определение функции наследования, даже несмотря на то, что существуют две версии функции, «перегруженные» своими неявными аргументами.
Есть несколько способов, которые я могу придумать, чтобы исправить это. Вместо того, чтобы перечислять их здесь, я отмечу их как ответы, за которые вы можете проголосовать, чтобы подтвердить здравомыслие, а также предложить любое лучшее решение.