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:


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