Hyperlinkv0.8.0-beta.28

Channel

Channel.runCollectconsteffect/Channel.ts:7834
<OutElem, OutErr, OutDone, Env>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
): Effect.Effect<Array<OutElem>, OutErr, Env>

Runs a channel and collects all output elements into an array.

Example (Collecting channel output)

import { Channel, Data } from "effect"

class CollectError extends Data.TaggedError("CollectError")<{
  readonly reason: string
}> {}

// Create a channel with elements
const numbersChannel = Channel.fromIterable([1, 2, 3, 4, 5])

// Collect all elements into an array
const collectEffect = Channel.runCollect(numbersChannel)

// Effect.runSync(collectEffect) // Returns: [1, 2, 3, 4, 5]
execution
export const runCollect = <OutElem, OutErr, OutDone, Env>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
): Effect.Effect<Array<OutElem>, OutErr, Env> =>
  runFold(self, () => [] as Array<OutElem>, (acc, o) => {
    acc.push(o)
    return acc
  })