collectOrElse method

Iterable<T> collectOrElse(
  1. T errMap(
    1. E error
    )
)

Converts an Iterable<Result<T, E>> to a <Iterable<T>. All Err values are replaced by the result of the provided function.

Basic usage

final list = <Result<int, String>>[
  Ok(4),
  Ok(7),
  Ok(2),
  Err('first'),
  Ok(9),
  Err('second'),
];
final valueList = list.collectOrElse((error) => error.length);
expect(valueList, [4, 7, 2, 5, 9, 6]);

final list = <Result<int, String>>[Ok(1), Ok(2), Ok(3), Ok(4)];
final valueList = list.collectOrElse((error) => error.length);
expect(valueList, [1, 2, 3, 4]);

Implementation

Iterable<T> collectOrElse(T Function(E error) errMap) {
  return map((Result<T, E> result) {
    return result.unwrapOrElse(errMap);
  });
}