scala/ScalaBook/chapter-11/src/main/scala/scalabook/data/ForEach.scala

package scalabook.data

object ForEach {
  type StructuralForEach[T] = {
        def foreach(f: T => Unit): Unit
    }

  implicit def structuralToNominalForEach[T](s: StructuralForEach[T]): ForEach[T] =
        new ForEach[T] {
            def foreach(f: T => Unit) = s foreach f
        }
}

trait ForEach[T] {
  def foreach(f: T => Unit): Unit
}