Hyperlinkv0.8.0-beta.28

ScopedRef

ScopedRef.fromAcquireconsteffect/ScopedRef.ts:75
<A, E, R>(acquire: Effect.Effect<A, E, R>): Effect.Effect<
  ScopedRef<A>,
  E,
  Scope.Scope | R
>

Creates a new ScopedRef from an effect that acquires the initial value.

When to use

Use when creating a ScopedRef whose initial value requires acquiring resources that must be released.

constructorsmake
Source effect/ScopedRef.ts:7514 lines
export const fromAcquire: <A, E, R>(
  acquire: Effect.Effect<A, E, R>
) => Effect.Effect<ScopedRef<A>, E, Scope.Scope | R> = Effect.fnUntraced(function*<A, E, R>(
  acquire: Effect.Effect<A, E, R>
) {
  const scope = Scope.makeUnsafe()
  const value = yield* acquire.pipe(
    Scope.provide(scope),
    Effect.tapCause((cause) => Scope.close(scope, Exit.failCause(cause)))
  )
  const self = makeUnsafe(scope, value)
  yield* Effect.addFinalizer((exit) => Scope.close(self.backing.backing.ref.current[0], exit))
  return self
}, Effect.uninterruptible)
Referenced by 1 symbols