implicit def pfOption[T]()

in protobuf/src/main/scala/magnolify/protobuf/ProtobufType.scala [244:261]


  implicit def pfOption[T](implicit f: ProtobufField[T]): ProtobufField[Option[T]] =
    new Aux[Option[T], f.FromT, f.ToT] {
      override val default: Option[Option[T]] = f.default match {
        case Some(v) => Some(Some(v))
        case None    => None
      }

      // we must use Option instead of Some because
      // the underlying field may interpret custom values as null
      // eg. Unsafe enums are encoded as string and default "" is treated as None
      override def from(v: f.FromT)(cm: CaseMapper): Option[T] =
        if (v == null) None else Option(f.from(v)(cm))

      override def to(v: Option[T], b: Message.Builder)(cm: CaseMapper): f.ToT = v match {
        case None    => null.asInstanceOf[f.ToT]
        case Some(x) => f.to(x, b)(cm)
      }
    }