Either<L, R>.either constructor

Either<L, R>.either(
  1. Map0<L?> leftProvider,
  2. Map0<R?> rightProvider
)

Creates a left-biased Either. This means, if the leftProvider returns a non-null value create a left-sided Either. Alternatively, if the rightProvider returns a non-null value, create a right-sided Either. Otherwise, if both providers return a null-value, throw a StateError.

Implementation

factory Either.either(
  Map0<L?> leftProvider,
  Map0<R?> rightProvider,
) {
  final leftValue = leftProvider();
  if (leftValue != null) {
    return Either<L, R>.left(leftValue);
  }
  final rightValue = rightProvider();
  if (rightValue != null) {
    return Either<L, R>.right(rightValue);
  }
  throw noValueError;
}