cps.monads.zio

Type members

Classlikes

object TaskManagedCpsMonad extends ZManagedCpsMonad[Any, Throwable]
class ZIOCpsMonad[R, E] extends CpsConcurrentEffectMonad[[X] =>> ZIO[R, E, X]] with CpsMonadInstanceContext[[X] =>> ZIO[R, E, X]]
case class ZIOErrorAdapter[E](e: E) extends RuntimeException
class ZManagedCpsMonad[R, E] extends CpsTryMonad[[X] =>> ZManaged[R, E, X]] with CpsMonadInstanceContext[[X] =>> ZManaged[R, E, X]]

CpsMonad which encapsulate effects with automatic resource management.

CpsMonad which encapsulate effects with automatic resource management.

Example of usage:

 asyncRManaged[R] {
     val input = FileChannel.open(inputPath)
     val output = FileChannel.open(outputPath)
     input.transformTo(0,Long.MaxValue,output)
 }

Value members

Concrete methods

transparent inline def asyncRIO[R]: InferAsyncArg[[X] =>> RIO[R, X], CpsMonadInstanceContextBody[[X] =>> ZIO[R, Throwable, X]]]
transparent inline def asyncRManaged[R]: InferAsyncArg[[X] =>> RManaged[R, X], CpsMonadInstanceContextBody[[X] =>> ZManaged[R, Throwable, X]]]
transparent inline def asyncZIO[R, E](using CpsConcurrentEffectMonad[[X] =>> ZIO[R, E, X]]): InferAsyncArg[[X] =>> ZIO[R, E, X], CpsMonadInstanceContextBody[[X] =>> ZIO[R, E, X]]]
transparent inline def asyncZManaged[R, E](using CpsTryMonad[[X] =>> ZManaged[R, E, X]]): InferAsyncArg[[X] =>> ZManaged[R, E, X], CpsMonadInstanceContextBody[[X] =>> ZManaged[R, E, X]]]

Givens

Givens

given awaitValueDiscard[R, E](using CpsMonad[[X] =>> ZIO[R, E, X]]): ValueDiscard[ZIO[R, E, Unit]]
given futureZIOConversion[R, E](using x$1: Runtime[R]): futureZIOConversion[R, E]
given given_CpsTryMonad_TaskManaged: CpsTryMonad[TaskManaged]
given zioCpsMonad[R, E]: ZIOCpsMonad[R, E]
given zioDynamicMemoizationAp[R1, E1, R2 >: R1, E2 <: E1, T]: zioDynamicMemoizationAp[R1, E1, R2, E2, T]
given zioMemoization[R, E]: zioMemoization[R, E]
given zioToRio[R]: zioToRio[R]
given zioToZManaged[R1, R2 <: R1, E1, E2 >: E1]: zioToZManaged[R1, R2, E1, E2]
given zioToZio[R1, R2 <: R1, E1, E2 >: E1]: zioToZio[R1, R2, E1, E2]

Extensions

Extensions

extension [R, E, A](r: ZManaged[R, E, A])(using m: CpsTryMonad[[X] =>> ZIO[R, E, X]])
transparent inline def useOn[B](inline f: A => B)(using CpsMonadContext[[X] =>> ZIO[R, E, X]]): B

pseudo-synchronious variant of use for using inside async block.

pseudo-synchronious variant of use for using inside async block.

extension (zm: ZManaged.type)
transparent inline def using[R, E, A, B](r: ZManaged[R, E, A])(inline f: A => B)(using m: CpsTryMonad[[X] =>> ZIO[R, E, X]], mc: CpsMonadContext[[X] =>> ZIO[R, E, X]]): B

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.

transparent inline def using[R, E, A1, A2, B](r1: ZManaged[R, E, A1], r2: ZManaged[R, E, A2])(inline f: (A1, A2) => B)(using m: CpsTryMonad[[X] =>> ZIO[R, E, X]], mc: CpsMonadContext[[X] =>> ZIO[R, E, X]]): B

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.

transparent inline def using[R, E, A1, A2, A3, B](r1: ZManaged[R, E, A1], r2: ZManaged[R, E, A2], r3: ZManaged[R, E, A3])(inline f: (A1, A2, A3) => B)(using m: CpsTryMonad[[X] =>> ZIO[R, E, X]], mc: CpsMonadContext[[X] =>> ZIO[R, E, X]]): B

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.

using ZManaged resource and close r after f will be finished. Shpuld be used inside async block, 'f' can contains awaits.