Hyperlinkv0.8.0-beta.28

Layer

Layer.syncContextconsteffect/Layer.ts:935
<A>(evaluate: LazyArg<Context.Context<A>>): Layer<A>

Constructs a layer lazily that provides all services in a Context.

When to use

Use when you need a Layer that creates multiple services synchronously but defers that work until the layer is built.

Details

This is a lazy version of succeedContext where the Context is computed synchronously only when the layer is built.

Example (Lazily providing a context)

import { Context, Effect, Layer } from "effect"

class Database extends Context.Service<Database, {
  readonly query: (sql: string) => Effect.Effect<string>
}>()("Database") {}

const layer = Layer.syncContext(() =>
  Context.make(Database, {
    query: (sql: string) => Effect.succeed(`Query: ${sql}`)
  })
)
constructorssyncsucceedContext
Source effect/Layer.ts:9352 lines
export const syncContext = <A>(evaluate: LazyArg<Context.Context<A>>): Layer<A> =>
  fromBuildMemo(constant(internalEffect.sync(evaluate)))
Referenced by 1 symbols