Hyperlinkv0.8.0-beta.28

FiberSet

FiberSet.addconsteffect/FiberSet.ts:362
<A, E, XE extends E, XA extends A>(
  fiber: Fiber.Fiber<XA, XE>,
  options?:
    | { readonly propagateInterruption?: boolean | undefined }
    | undefined
): (self: FiberSet<A, E>) => Effect.Effect<void>
<A, E, XE extends E, XA extends A>(
  self: FiberSet<A, E>,
  fiber: Fiber.Fiber<XA, XE>,
  options?:
    | { readonly propagateInterruption?: boolean | undefined }
    | undefined
): Effect.Effect<void>

Adds a fiber to the FiberSet. When the fiber completes, it will be removed.

Example (Adding a fiber)

import { Effect, FiberSet } from "effect"

const program = Effect.gen(function*() {
  const set = yield* FiberSet.make()
  const fiber = yield* Effect.forkChild(Effect.succeed("hello"))

  // Add the fiber to the set
  yield* FiberSet.add(set, fiber)

  // The fiber is now managed by the set
  console.log(yield* FiberSet.size(set)) // 1
})
combinators
Source effect/FiberSet.ts:36224 lines
export const add: {
  <A, E, XE extends E, XA extends A>(
    fiber: Fiber.Fiber<XA, XE>,
    options?: {
      readonly propagateInterruption?: boolean | undefined
    } | undefined
  ): (self: FiberSet<A, E>) => Effect.Effect<void>
  <A, E, XE extends E, XA extends A>(
    self: FiberSet<A, E>,
    fiber: Fiber.Fiber<XA, XE>,
    options?: {
      readonly propagateInterruption?: boolean | undefined
    } | undefined
  ): Effect.Effect<void>
} = dual(
  (args) => isFiberSet(args[0]),
  <A, E, XE extends E, XA extends A>(
    self: FiberSet<A, E>,
    fiber: Fiber.Fiber<XA, XE>,
    options?: {
      readonly propagateInterruption?: boolean | undefined
    } | undefined
  ): Effect.Effect<void> => Effect.sync(() => addUnsafe(self, fiber, options))
)