effect-io-ai

Package: effect
Module: Channel

Channel.acquireRelease

Acquires a resource, emits the acquired value as a single channel element, and registers release in the channel scope.

Details

The release action runs when the channel scope closes and receives the scope exit. If acquisition fails, no element is emitted and release is not registered.

Example (Managing resources with acquire-release)

import { Channel, Effect } from "effect"

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

Signature

declare const acquireRelease: { <Z>(release: (z: Z, e: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown>): <E, R>(self: Effect.Effect<Z, E, R>) => Channel<Z, E, void, unknown, unknown, unknown, R>; <Z, E, R>(self: Effect.Effect<Z, E, R>, release: (z: Z, e: Exit.Exit<unknown, unknown>) => Effect.Effect<unknown>): Channel<Z, E, void, unknown, unknown, unknown, R>; }

Source

Since v4.0.0