Core concept

opaque type Email = String
object Email:
  def apply(s: String): Email = s
Advertisement

How it works

Only in Scala 3. Companion object for smart constructors.

Advertisement

Trade-offs + gotchas

Type-safe wrappers. Newtype idiom.