transpose method

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

Transposes the result of an option.

Some(Ok(1)) => Ok(Some(1));
Some(Err('message')) => Err('message');
None() => Ok(None());

See also https://doc.rust-lang.org/std/option/enum.Option.html#method.transpose

Implementation

Result<Option<T>, E> transpose() {
  return match(
    (result) => result.match(
      (value) => Ok(Some(value)),
      Err.new,
    ),
    () => Ok(None<T>()),
  );
}