fields[I, V, R, S](a: User, i: I)(implicit r: LogRenderer[I, V, R, S]): R = {
r.addString("name", a.name, i) |+| r.addString("surname", a.surname, i)
}
override def logShow(a: User): String = s"name = ${a.name}, surname = ${a.surname}"
}
А есть более удобный апи для этого? Ну допустим у меня все поля case class-а имеют Loggable, и я хочу их просто скомпозить.
Loggable.show[User] + Loggable[String].contramap(_.name).named("user") + Loggable[String].contramap(_.surname).named("surname")
Обсуждают сегодня