Package: effect
Module: Channel
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>
Since v2.0.0