cps.monads.zio

Type members

Classlikes

object TaskManagedCpsMonad extends ZManagedCpsMonad[Any, Throwable]
class ZIOCpsMonad[R, E] extends CpsConcurrentEffectMonad[[X] =>> ZIO[R, E, X]]
case
class ZIOErrorAdapter[E](e: E) extends RuntimeException
class ZManagedCpsMonad[R, E] extends CpsTryMonad[[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]]
transparent inline
def asyncRManaged[R]: InferAsyncArg[[X] =>> RManaged[R, X]]
transparent inline
def asyncZIO[R, E](using CpsConcurrentEffectMonad[[X] =>> ZIO[R, E, X]]): InferAsyncArg[[X] =>> ZIO[R, E, X]]
transparent inline
def asyncZManaged[R, E](using CpsTryMonad[[X] =>> ZManaged[R, E, X]]): InferAsyncArg[[X] =>> ZManaged[R, E, X]]

Concrete fields

final lazy
val CpsTryMonad_TaskManaged: CpsTryMonad[TaskManaged]

Givens

Givens

given futureZIOConversion[R, E](using val x$1: Runtime[R]): CpsMonadConversion[[T] =>> ZIO[R, E, T], Future]
given zManagedCpsMonad: CpsTryMonad[[X] =>> ZManaged[R, E, X]]
given zioCpsMonad: CpsConcurrentEffectMonad[[X] =>> ZIO[R, E, X]]
given zioDynamicMemoizationAp[R1, E1, R2 >: R1, E2 <: E1, T]: DynamicAp[[X] =>> ZIO[R1, E1, X], T, ZIO[R2, E2, T]]
given zioMemoization[R, E]: Dynamic[[X] =>> ZIO[R, E, X]]
given zioToRio[R]: CpsMonadConversion[[T] =>> ZIO[Nothing, Any, T], [T] =>> RIO[R, T]]
given zioToZManaged[R1, R2 <: R1, E1, E2 >: E1]: CpsMonadConversion[[T] =>> ZIO[R1, E1, T], [T] =>> ZManaged[R2, E2, T]]
given zioToZio[R1, R2 <: R1, E1, E2 >: E1]: CpsMonadConversion[[T] =>> ZIO[R1, E1, T], [T] =>> ZIO[R2, E2, T]]

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): B

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

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

extension (zm: ZManaged)
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]]): 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]]): 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]]): 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.