ResultExtensionsFlatten Method

Overload List

Flatten(ResRes) Flattens the result of result; i.e., Res<Res> -> Res, by mapping:
  • Err => Err,
  • Ok(Err) => Err,
  • Ok(Ok) => Ok.
C#
Res<Res> nestedResult = Err<Res>("msg");
Res result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));

Res<Res> nestedResult = Ok(Err("msg"));
Res result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));

Res<Res> nestedResult = Ok(Ok());
Res result = nestedResult.Flatten();
Assert(result.IsOk);
FlattenT(ResResT) Flattens the result of result of T; i.e., Res<Res<T>> -> Res<T>, by mapping:
  • Err => Err,
  • Ok(Err) => Err,
  • Ok(Ok(value)) => Ok(value).
C#
Res<Res<int>> nestedResult = Err<Res<int>>("msg");
Res<int> result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));

Res<Res<int>> nestedResult = Ok(Err<int>("msg"));
Res<int> result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));

Res<Res<int>> nestedResult = Ok(Ok(42));
Res<int> result = nestedResult.Flatten();
Assert(result.IsOk and result.Unwrap() == 42);

See Also