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