sealed abstract class ZLayer[-RIn, +E, +ROut] extends AnyRef
A ZLayer[E, A, B]
describes how to build one or more services in your
application. Services can be injected into effects via ZIO#provide. Effects
can require services via ZIO.service."
Layer can be thought of as recipes for producing bundles of services, given their dependencies (other services).
Construction of services can be effectful and utilize resources that must be acquired and safely released when the services are done being utilized.
By default layers are shared, meaning that if the same layer is used twice the layer will only be allocated a single time.
Because of their excellent composition properties, layers are the idiomatic way in ZIO to create services that depend on other services.
- Self Type
- ZLayer[RIn, E, ROut]
- Alphabetic
- By Inheritance
- ZLayer
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!(implicit ev1: <:<[E, Throwable], ev2: CanFail[E], trace: Trace): ZLayer[RIn, Nothing, ROut]
A symbolic alias for
orDie
. -
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
- final def +!+[E1 >: E, RIn2, ROut1 >: ROut, ROut2](that: ⇒ ZLayer[RIn2, E1, ROut2]): ZLayer[RIn with RIn2, E1, ROut1 with ROut2]
-
final
def
++[E1 >: E, RIn2, ROut1 >: ROut, ROut2](that: ⇒ ZLayer[RIn2, E1, ROut2])(implicit tag: zio.EnvironmentTag[ROut2]): ZLayer[RIn with RIn2, E1, ROut1 with ROut2]
Combines this layer with the specified layer, producing a new layer that has the inputs and outputs of = both.
-
def
<>[RIn1 <: RIn, E1, ROut1 >: ROut](that: ⇒ ZLayer[RIn1, E1, ROut1])(implicit ev: CanFail[E], trace: Trace): ZLayer[RIn1, E1, ROut1]
A symbolic alias for
orElse
. -
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
and[E1 >: E, RIn2, ROut1 >: ROut, ROut2](that: ⇒ ZLayer[RIn2, E1, ROut2])(implicit tag: zio.EnvironmentTag[ROut2]): ZLayer[RIn with RIn2, E1, ROut1 with ROut2]
A named alias for
++
. -
final
def
andTo[E1 >: E, RIn2 >: ROut, ROut1 >: ROut, ROut2](that: ⇒ ZLayer[RIn2, E1, ROut2])(implicit tagged: zio.EnvironmentTag[ROut2], trace: Trace): ZLayer[RIn, E1, ROut1 with ROut2]
A named alias for
>+>
. -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
final
def
build(scope: ⇒ Scope)(implicit trace: Trace): ZIO[RIn, E, ZEnvironment[ROut]]
Builds a layer into a ZIO value.
Builds a layer into a ZIO value. Any resources associated with this layer will be released when the specified scope is closed unless their scope has been extended. This allows building layers where the lifetime of some of the services output by the layer exceed the lifetime of the effect the layer is provided to.
-
final
def
build(implicit trace: Trace): ZIO[RIn with Scope, E, ZEnvironment[ROut]]
Builds a layer into a scoped value.
-
final
def
catchAll[RIn1 <: RIn, E1, ROut1 >: ROut](handler: (E) ⇒ ZLayer[RIn1, E1, ROut1])(implicit trace: Trace): ZLayer[RIn1, E1, ROut1]
Recovers from all errors.
-
final
def
catchAllCause[RIn1 <: RIn, E1, ROut1 >: ROut](handler: (Cause[E]) ⇒ ZLayer[RIn1, E1, ROut1])(implicit trace: Trace): ZLayer[RIn1, E1, ROut1]
Recovers from all errors.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
debug(prefix: ⇒ String)(implicit trace: Trace): ZLayer[RIn, E, ROut]
Taps the layer, printing the result of calling
.toString
on the value.Taps the layer, printing the result of calling
.toString
on the value. Prefixes the output with the given message. -
final
def
debug(implicit trace: Trace): ZLayer[RIn, E, ROut]
Taps the layer, printing the result of calling
.toString
on the value. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
extendScope: ZLayer[RIn with Scope, E, ROut]
Extends the scope of this layer, returning a new layer that when provided to an effect will not immediately release its associated resources when that effect completes execution but instead when the scope the resulting effect depends on is closed.
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
flatMap[RIn1 <: RIn, E1 >: E, ROut2](f: (ZEnvironment[ROut]) ⇒ ZLayer[RIn1, E1, ROut2])(implicit trace: Trace): ZLayer[RIn1, E1, ROut2]
Constructs a layer dynamically based on the output of this layer.
- final def flatten[RIn1 <: RIn, E1 >: E, ROut1 >: ROut, ROut2](implicit tag: Tag[ROut1], ev1: <:<[ROut1, ZLayer[RIn1, E1, ROut2]], trace: Trace): ZLayer[RIn1, E1, ROut2]
-
final
def
foldCauseLayer[E1, RIn1 <: RIn, ROut2](failure: (Cause[E]) ⇒ ZLayer[RIn1, E1, ROut2], success: (ZEnvironment[ROut]) ⇒ ZLayer[RIn1, E1, ROut2])(implicit ev: CanFail[E]): ZLayer[RIn1, E1, ROut2]
Feeds the error or output services of this layer into the input of either the specified
failure
orsuccess
layers, resulting in a new layer with the inputs of this layer, and the error or outputs of the specified layer. -
final
def
foldLayer[E1, RIn1 <: RIn, ROut2](failure: (E) ⇒ ZLayer[RIn1, E1, ROut2], success: (ZEnvironment[ROut]) ⇒ ZLayer[RIn1, E1, ROut2])(implicit ev: CanFail[E], trace: Trace): ZLayer[RIn1, E1, ROut2]
Feeds the error or output services of this layer into the input of either the specified
failure
orsuccess
layers, resulting in a new layer with the inputs of this layer, and the error or outputs of the specified layer. -
final
def
fresh: ZLayer[RIn, E, ROut]
Creates a fresh version of this layer that will not be shared.
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
lazy val
hashCode: Int
Returns the hash code of this layer.
Returns the hash code of this layer.
- Definition Classes
- ZLayer → AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
launch(implicit trace: Trace): ZIO[RIn, E, Nothing]
Builds this layer and uses it until it is interrupted.
Builds this layer and uses it until it is interrupted. This is useful when your entire application is a layer, such as an HTTP server.
-
final
def
map[ROut1](f: (ZEnvironment[ROut]) ⇒ ZEnvironment[ROut1])(implicit trace: Trace): ZLayer[RIn, E, ROut1]
Returns a new layer whose output is mapped by the specified function.
-
final
def
mapError[E1](f: (E) ⇒ E1)(implicit ev: CanFail[E], trace: Trace): ZLayer[RIn, E1, ROut]
Returns a layer with its error channel mapped using the specified function.
-
final
def
mapErrorCause[E2](h: (Cause[E]) ⇒ Cause[E2])(implicit trace: Trace): ZLayer[RIn, E2, ROut]
Returns a layer with its full cause of failure mapped using the specified function.
Returns a layer with its full cause of failure mapped using the specified function. This can be used to transform errors while preserving the original structure of
Cause
.- See also
-
final
def
memoize(implicit trace: Trace): ZIO[Scope, Nothing, ZLayer[RIn, E, ROut]]
Returns a scoped effect that, if evaluated, will return the lazily computed result of this layer.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
orDie(implicit ev1: IsSubtypeOfError[E, Throwable], ev2: CanFail[E], trace: Trace): ZLayer[RIn, Nothing, ROut]
Translates effect failure into death of the fiber, making all failures unchecked and not a part of the type of the layer.
-
final
def
orElse[RIn1 <: RIn, E1, ROut1 >: ROut](that: ⇒ ZLayer[RIn1, E1, ROut1])(implicit ev: CanFail[E], trace: Trace): ZLayer[RIn1, E1, ROut1]
Executes this layer and returns its output, if it succeeds, but otherwise executes the specified layer.
-
final
def
retry[RIn1 <: RIn](schedule0: ⇒ Schedule[RIn1, E, Any])(implicit trace: Trace): ZLayer[RIn1, E, ROut]
Retries constructing this layer according to the specified schedule.
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
final
def
tap[RIn1 <: RIn, E1 >: E](f: (ZEnvironment[ROut]) ⇒ ZIO[RIn1, E1, Any])(implicit trace: Trace): ZLayer[RIn1, E1, ROut]
Performs the specified effect if this layer succeeds.
-
final
def
tapError[RIn1 <: RIn, E1 >: E](f: (E) ⇒ ZIO[RIn1, E1, Any])(implicit trace: Trace): ZLayer[RIn1, E1, ROut]
Performs the specified effect if this layer fails.
-
final
def
tapErrorCause[RIn1 <: RIn, E1 >: E](f: (Cause[E]) ⇒ ZIO[RIn1, E1, Any])(implicit trace: Trace): ZLayer[RIn1, E1, ROut]
Performs the specified effect if this layer fails.
-
final
def
to[E1 >: E, ROut2](that: ⇒ ZLayer[ROut, E1, ROut2])(implicit trace: Trace): ZLayer[RIn, E1, ROut2]
A named alias for
>>>
. -
final
def
toRuntime(implicit ev: <:<[Any, RIn], trace: Trace): ZIO[Scope, E, Runtime[ROut]]
Converts a layer that requires no services into a scoped runtime, which can be used to execute effects.
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
unit(implicit trace: Trace): ZLayer[RIn, E, Unit]
Replaces the layer's output with
Unit
.Replaces the layer's output with
Unit
.When used with ZIO.provide and ZLayer.make macros (and their variants), this will suppress the unused layer warning that is normally emitted, and will actually include the layer for its side-effects.
-
final
def
update[A >: ROut](f: (A) ⇒ A)(implicit arg0: Tag[A], trace: Trace): ZLayer[RIn, E, ROut]
Updates one of the services output by this layer.
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
zipWithPar[E1 >: E, RIn2, ROut1 >: ROut, ROut2, ROut3](that: ⇒ ZLayer[RIn2, E1, ROut2])(f: (ZEnvironment[ROut], ZEnvironment[ROut2]) ⇒ ZEnvironment[ROut3]): ZLayer[RIn with RIn2, E1, ROut3]
Combines this layer the specified layer, producing a new layer that has the inputs of both, and the outputs of both combined using the specified function.