mapOrElse<U> method

Result<U, E> mapOrElse<U>(
  1. U orFn(),
  2. U mapFn(
    1. T
    )
)

Maps a Result<T, E> to a Result<U, E> using the given mapFn function with the held value if the Result is Ok. Otherwise returns the result of orFn as Ok(orFn()).

orFn will only be evaluated if this Result is Err.

Result<int, String> a = Ok(1);
Result<int, String> b = Err('foo');

print(a.mapOrElse(() => 5, (val) => val + 1).unwrap()); // prints: 2
print(b.mapOrElse(() => 5, (val) => val + 1).unwrap()); // prints: 5

Note: Unlike Rust's Result.map_or_else(), this method returns a Result value. Given that Result.map() returns the mapped Result it just made sense for this method to do the same.

See also: Rust: Result::map_or_else()

Implementation

Result<U, E> mapOrElse<U>(U Function() orFn, U Function(T) mapFn) => switch (this) {
	Ok(:T v) => Ok(mapFn(v)),
	Err() => Ok(orFn())
};