ZIO Prelude
ZIO Prelude type class instances for version types.
libraryDependencies += "africa.shuwari" %% /* or `%%%` */ "version-zio-prelude" % "0.6.2"
Usage
import zio.prelude.*
import version.*
import version.zio.prelude.given
Provided Instances
Ord
Ordering for all comparable types:
import zio.prelude.Ord
Ord[Version].compare(v1, v2) // Ordering.LessThan
Ord[MajorVersion].compare(major1, major2)
Types with Ord:
- version.Version
- version.MajorVersion, version.MinorVersion, version.PatchNumber, version.PreReleaseNumber
- version.PreReleaseClassifier
- version.PreRelease
Equal
Equality for all types:
import zio.prelude.Equal
Equal[Version].equal(v1, v1) // true
Equal[Metadata].equal(bm1, bm2)
Hash
Hashing for all types:
import zio.prelude.Hash
Hash[Version].hash(v) // Int
Debug
Pretty-printing for all types:
import zio.prelude.Debug
Debug[Version].debug(v).render
// "Version(1, 0, 0, None, None)"
Example Usage
import zio.prelude.*
import version.*
import version.zio.prelude.given
val versions = List(
Version.parseUnsafe("1.0.0"),
Version.parseUnsafe("1.0.0-alpha.1"),
Version.parseUnsafe("2.0.0")
)
// Maximum (uses Ord)
versions.maxOption // Some(2.0.0)
// Distinct (uses Hash + Equal)
versions.distinct
// Sorting (uses Ord)
versions.sorted
Platform Support
| Platform | Status |
|---|---|
| JVM | ✅ |
| Scala.js | ✅ |
| Scala Native | ✅ |
In this article