transpose method

Result<Option<T>, E> transpose()

Transposes this Option<Result<T, E>> into a Result<Option<T>, E>.

Returns:

Option<Result<int, String>> a = Some(Ok(1));
Result<Option<int>, String> b = Ok(Some(1));

print(a.transpose() == b); // prints: true

See also: Rust: Option::transpose()

Implementation

Result<Option<T>, E> transpose() {
  return switch (this) {
    Some(v: Ok(:T v)) => Ok(Some(v)),
    Some(v: Err(:E e)) => Err(e),
    None() => Ok(None()),
  };
}