Encoder[E]是否可以为任何子类型E(例如,在is的代码实例中E扩展GeneratedEnum类的任何子类型)定义和传递到where是包含as 字段的某个案例类。EColorAvroSchema[C]CE
case class Color(value: Int) extends scalapb.GeneratedEnum // ... it has .name field
case class MyCaseClassWithEnum(color: Color) // ...
implicit def enumEncoder[E <: scalapb.GeneratedEnum]: Encoder[E] = new Encoder[E] {
override def encode(e: E, schema: Schema, fieldMapper: FieldMapper): AnyRef = e.name
}
val actualSchema = AvroSchema[MyCaseClassWithEnum]
完整的源代码在这里
基本上希望 like 的任何子类型实例都GeneratedEnum编码Color为String.