我有一个能够持久化任何类型的方法,只要该类型有一个io.circe.Encoder[A]
实例,如下所示:
def persist[A](a: A)(implicit ea: Encoder[A]): Boolean
现在在测试这个时,我可以创建任何旧的案例类,或者密封特征下的案例类集,创建一个 ADT,并使用自动类型类派生来创建Encoder
ScalaCheckArbitrary
实例,这使得测试非常好.
是否有可能以某种方式使用 Shapeless 来创建任意案例类系列(因此自动派生Encoder
和Arbitrary
实例),以便我可以确定我的persist
方法适用于任何类型?
我什至不知道从哪里开始,更不用说尝试为此描述一种类型了。