Integration with Cats typeclasses (Eq, Show, Hash, Order)
Importing the Cats integration:
// For Cats version 2.x.x
libraryDependencies += "io.monix" %% "newtypes-cats-v2" % "1.0.0"
Usage:
import monix.newtypes._
import monix.newtypes.integrations.DerivedCatsInstances
type Email = Email.Type
object Email extends NewtypeValidated[String] with DerivedCatsInstances {
def apply(v: String): Either[BuildFailure[Type], Type] =
if (v.contains("@"))
Right(unsafeCoerce(v))
else
Left(BuildFailure("missing @"))
}
You can now use the syntax from cats:
import cats.syntax.all._
Email.unsafe("[email protected]").show
In this article