Opaques

This is mini project to create opaque types, and companion objects.

It's Scala 3 only.

To install

libraryDependencies += "io.github.mercurievv.minuscles" % "opaques" % "0.1.1"

Use import

import io.github.mercurievv.minuscles.opaques.*

Let's create opaque type:

val UserName = Opaque.create[String]
// UserName: Opaque[String] = io.github.mercurievv.minuscles.opaques.Opaque$$anon$1@35cb32c7
type UserName = UserName.Opq

Now we will do some mappings:

Opaque object creation and getting back

val userName = UserName("MercurieVV")
// userName: Opq = "MercurieVV"
val userNameStr = UserName.unwrap(userName)
// userNameStr: String = "MercurieVV"
assert(userNameStr == "MercurieVV")