implicit def option[T]()

in bijection-core/src/main/scala/com/twitter/bijection/Bufferable.scala [190:206]


  implicit def option[T](implicit buf: Bufferable[T]): Bufferable[Option[T]] =
    build[Option[T]] { (bb, opt) =>
      opt match {
        case None => reallocatingPut(bb) { _.put(0: Byte) }
        case Some(v) => {
          val nextBb = reallocatingPut(bb) { _.put(1: Byte) }
          reallocatingPut(nextBb) { buf.put(_, opt.get) }
        }
      }
    } { bb =>
      val dup = bb.duplicate
      val byte0 = 0: Byte
      if (dup.get == byte0) Success((dup, None))
      else {
        buf.get(dup).map { tup => (tup._1, Some(tup._2)) }
      }
    }