Hyperlinkv0.8.0-beta.28

Cause

Cause.Doneinterfaceeffect/Cause.ts:1336
Done<A>

A graceful completion signal for queues and streams.

When to use

Use to model normal producer completion through a stream or queue error channel.

Details

Done indicates that a producer has finished normally — no more elements will arrive. It is distinct from an error or interruption; it represents successful completion. The optional value field can carry a final leftover payload.

Example (Signaling queue completion)

import { Cause, Effect, Queue } from "effect"

const program = Effect.gen(function*() {
  const queue = yield* Queue.bounded<number, Cause.Done>(10)
  yield* Queue.offer(queue, 1)
  yield* Queue.end(queue)

  const result = yield* Effect.flip(Queue.take(queue))
  console.log(Cause.isDone(result)) // true
})
errors
Source effect/Cause.ts:133643 lines
export interface Done<A = void> {
  readonly [DoneTypeId]: typeof DoneTypeId
  readonly _tag: "Done"
  readonly value: A
}

/**
 * Companion namespace for the `Done` interface.
 *
 * @since 4.0.0
 */
export declare namespace Done {
  /**
   * Extracts the value type `A` from a `Done<A>` that may be nested in an
   * error union.
   *
   * @category utility types
   * @since 4.0.0
   */
  export type Extract<E> = E extends Done<infer L> ? L : never

  /**
   * Filters a type union to only keep `Done` members.
   *
   * @category filtering
   * @since 4.0.0
   */
  export type Only<E> = E extends Done<infer L> ? Done<L> : never
}

/**
 * Creates a `Done` signal with an optional value.
 *
 * **When to use**
 *
 * Use when you need to construct a low-level pull completion signal directly.
 *
 * @see {@link done} — create a failing `Effect` with `Done`
 *
 * @category constructors
 * @since 4.0.0
 */
export const Done: <A = void>(value?: A) => Done<A> = core.Done
Referenced by 48 symbols