Hyperlinkv0.8.0-beta.28

Iterable

Iterable.getFailuresconsteffect/Iterable.ts:1810
<R0, L>(self: Iterable<Result<R0, L>>): Iterable<L>

Returns a lazy iterable containing the failure values from an iterable of Results, skipping successful results.

Example (Extracting failures)

import { Iterable, Result } from "effect"
import * as assert from "node:assert"

assert.deepStrictEqual(
  Array.from(
    Iterable.getFailures([
      Result.succeed(1),
      Result.fail("err"),
      Result.succeed(2)
    ])
  ),
  ["err"]
)
filtering
export const getFailures = <R0, L>(self: Iterable<Result<R0, L>>): Iterable<L> => {
  return {
    [Symbol.iterator]() {
      const iterator = self[Symbol.iterator]()
      return {
        next() {
          let result = iterator.next()
          while (!result.done) {
            if (R.isFailure(result.value)) {
              return { done: false, value: result.value.failure }
            }
            result = iterator.next()
          }
          return { done: true, value: undefined }
        }
      }
    }
  }
}