Hyperlinkv0.8.0-beta.28

Stream

Stream.resultconsteffect/Stream.ts:2181
<A, E, R>(self: Stream<A, E, R>): Stream<Result.Result<A, E>, never, R>

Lifts failures and successes into a Result, yielding a stream that cannot fail.

Details

The stream ends after the first failure, emitting a Result.fail value.

Example (Converting failures to results)

import { Console, Effect, Result, Stream } from "effect"

const program = Effect.gen(function*() {
  const results = yield* Stream.make(1, 2).pipe(
    Stream.concat(Stream.fail("boom")),
    Stream.result,
    Stream.map(Result.match({
      onFailure: (error) => `failure: ${error}`,
      onSuccess: (value) => `success: ${value}`
    })),
    Stream.runCollect
  )
  yield* Console.log(results)
})

Effect.runPromise(program)
// Output: [ "success: 1", "success: 2", "failure: boom" ]
error handling
Source effect/Stream.ts:21815 lines
export const result = <A, E, R>(self: Stream<A, E, R>): Stream<Result.Result<A, E>, never, R> =>
  self.pipe(
    map(Result.succeed),
    catch_((e) => succeed(Result.fail(e)))
  )