MCPcopy Create free account
hub / github.com/effect-app/libs / acquireUseRelease

Function acquireUseRelease

repos/effect/packages/effect/src/Channel.ts:564–580  ·  view source on GitHub ↗
(
  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>
)

Source from the content-addressed store, hash-verified

562 * `release` is not registered.
563 *
564 * **Example** (Managing resources with acquire-use-release)
565 *
566 * ```ts import.meta.vitest
567 * import { Channel, Effect } from "effect"
568 *
569 * const released: Array<string> = []
570 * const channel = Channel.acquireUseRelease(
571 * Effect.succeed("resource"),
572 * (resource) => Channel.succeed(resource.toUpperCase()),
573 * (resource, exit) => Effect.sync(() => released.push(resource))
574 * )
575 * const observed = [await Effect.runPromise(Channel.runCollect(channel)), released] // => [["RESOURCE"], ["resource"]]
576 * ```
577 *
578 * @category constructors
579 * @since 2.0.0
580 */
581export const acquireUseRelease = <A, E, R, OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>(
582 acquire: Effect.Effect<A, E, R>,
583 use: (a: A) => Channel<OutElem, OutErr, OutDone, InElem, InErr, InDone, Env>,

Callers 1

Channel.tsFile · 0.85

Calls 5

fromTransformBracketFunction · 0.85
toTransformFunction · 0.85
someMethod · 0.80
releaseFunction · 0.70
useFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…