cps.monads.zio

Type members

Classlikes

object TaskCpsMonad extends ZIOCpsMonad[Any, Throwable]
object TaskManagedCpsMonad extends ZManagedCpsMonad[Any, Throwable]
trait ThrowableAdapter[-R, E]
class ZIOCpsMonad[R, E](using x$1: ThrowableAdapter[R, E]) extends CpsAsyncEffectMonad[[X] =>> ZIO[R, E, X]]
class ZManagedCpsMonad[R, E](using x$1: ThrowableAdapter[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

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

Concrete fields

final lazy val CpsAsyncEffectMonad_Task: CpsAsyncEffectMonad[Task]
final lazy val CpsTryMonad_TaskManaged: CpsTryMonad[TaskManaged]

Givens

Givens

given futureZIOConversion[R, E](using val x$1: Runtime[R], val x$2: ThrowableAdapter[R, E]): CpsMonadConversion[[T] =>> ZIO[R, E, T], [T] =>> Future[T]]
given throwableForThrowable[R, X <: Throwable]: ThrowableAdapter[R, X]
given zManagedCpsMonad: CpsTryMonad[[X] =>> ZManaged[R, E, X]]
given zioCpsMonad: CpsAsyncEffectMonad[[X] =>> ZIO[R, E, X]]
given zioDynamicMemoizationAp[R1, E1, R2 >: R1, E2 <: E1, T]: CpsMonadDynamicMemoizationAp[[X] =>> ZIO[R1, E1, X], T, ZIO[R2, E2, T]]
given zioMemoization[R, E]: CpsMonadDynamicMemoization[[X] =>> ZIO[R, E, X]]
given zioToZManaged[R1, R2 <: R1, E1, E2 >: E1](using val x$1: ThrowableAdapter[R1, E1], val x$2: ThrowableAdapter[R2, E2]): CpsMonadConversion[[T] =>> ZIO[R1, E1, T], [T] =>> ZManaged[R2, E2, T]]
given zioToZio[R1, R2 <: R1, E1, E2](using val x$1: ThrowableAdapter[R1, E1], val x$2: ThrowableAdapter[R2, E2]): CpsMonadConversion[[T] =>> ZIO[R1, E1, T], [T] =>> ZIO[R2, E2, T]]

Extensions

Extensions

extension (zm: ZManaged)
inline def using(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.

inline def using(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.

inline def using(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.