effect-io-ai

Package: effect
Module: Channel

Channel.acquireUseRelease

Acquires a resource, uses it to build a Channel, and guarantees that release runs with the channel’s Exit when the channel completes, fails, or is interrupted.

Details

Acquisition is uninterruptible. If acquisition fails, use is not run and release is not registered.

Example (Managing resources with acquire-use-release)

import { Channel, Effect } from "effect"

const channel = Channel.acquireUseRelease(
  Effect.succeed("resource"),
  (resource) => Channel.succeed(resource.toUpperCase()),
  (resource, exit) => Effect.log(`Released: ${resource}`)
)

Signature

declare const acquireUseRelease: <A, E, R, OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(acquire: Effect.Effect<A, E, R>, use: (a: A) => Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>, release: (a: A, exit: Exit.Exit<OutDone, OutErr>) => Effect.Effect<unknown>) => Channel<OutElem, OutErr | E, OutDone, InElem, InErr, InDone, Env | R>

Source

Since v2.0.0