Hyperlinkv0.8.0-beta.28

Channel

Channel.runLastconsteffect/Channel.ts:7891
<OutElem, OutErr, OutDone, Env>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
): Effect.Effect<Option.Option<OutElem>, OutErr, Env>

Runs a channel to completion and returns the last output element in an Option.

Details

Returns Option.some with the last emitted element, or Option.none if the channel completes without emitting output.

execution
Source effect/Channel.ts:789119 lines
export const runLast = <OutElem, OutErr, OutDone, Env>(
  self: Channel<OutElem, OutErr, OutDone, unknown, unknown, unknown, Env>
): Effect.Effect<Option.Option<OutElem>, OutErr, Env> =>
  Effect.suspend(() => {
    const absent = Symbol() // Prevent boxing
    let last: typeof absent | OutElem = absent
    return runWith(
      self,
      (pull) =>
        Effect.forever(
          Effect.flatMap(pull, (item) => {
            last = item
            return Effect.void
          }),
          { disableYield: true }
        ),
      () => last === absent ? Effect.succeedNone : Effect.succeedSome(last)
    )
  })
Referenced by 1 symbols