我正在尝试为 PSQL COPY BINARY 格式实现编解码器。详细信息在元组部分
Int、Bool、String 字段编码为<4 byte length><var length payload>
我像这样实现它们
val psqlUtf8: Codec[String] = variableSizeBytes(int32, utf8)
val psqlBool: Codec[Boolean] = variableSizeBytes(int32, byte).xmap[Boolean](_ == 1, v ⇒ if (v) 1 else 0)
val psqlInt: Codec[Int] = variableSizeBytes(int32, int32)
但是为了编码 NULL,他们在长度字段中使用 -1。
您能否建议我如何针对这种情况实施 Codec[Option[T]] ?