Цирцея автоматического деривации - борьба с импортом - PullRequest
0 голосов
/ 13 сентября 2018

В моем API есть метод, который выглядит следующим образом:

def read[T](implicit decoder: Decoder[T]): T

Пользователь может взять с собой любые T, которые ему нравятся, и мой код попытается проанализировать результат json в T.

Проблема, которую я хочу решить, заключается в том, что любой пользователь должен также импортировать io.circe.generic.auto._, чтобы заставить его работать и автоматически получить Decoder[T].

Можно ли как-нибудь изменить свой API, чтобы пользователь не мог принести этот импорт?

1 Ответ

0 голосов
/ 13 сентября 2018

Это может быть, если вы сделаете это в библиотеке - последствия могут легко конфликтовать, вызывая проблемы для ваших пользователей.

В Typelevel Scala 4 можно использовать настраиваемый импорт - он не приземлилсяв Scala 2.12, но (после нескольких итераций) приземлился на 2,13 .Таким образом, вы можете порекомендовать своим пользователям всегда иметь некоторые последствия, когда выйдет 2.13.0, но это будет осознанное решение с их стороны.

...