Example #1
0
 public static Task <Option <TFailure> > Failure <TSuccess, TFailure>(this Task <Result <TSuccess, TFailure> > result)
 => result.Match(_ => Option.None <TFailure>(), Option.Some);
Example #2
0
 public static Task <Option <TSuccess> > Success <TSuccess, TFailure>(this Task <Result <TSuccess, TFailure> > result)
 => result.Match(Option.Some, _ => Option.None <TSuccess>());
Example #3
0
 public static Option <TSuccess> ToOption <TSuccess, TFailure>(this Result <TSuccess, TFailure> result)
 => result.Match(Option.Some, _ => Option.None <TSuccess>());
Example #4
0
 public static Task <Result <Option <TResult>, TFailure> > BindIfSomeAsync <TSuccess, TFailure, TResult>(this Result <Option <TSuccess>, TFailure> result, Func <TSuccess, Task <Result <Option <TResult>, TFailure> > > bind)
 => result.BindAsync(success => success.MatchAsync(bind, () => Task.FromResult(Result.Success <Option <TResult>, TFailure>(Option.None <TResult>()))));
Example #5
0
 public static Result <Option <TResult>, TFailure> BindIfSome <TSuccess, TFailure, TResult>(this Result <Option <TSuccess>, TFailure> result, Func <TSuccess, Result <Option <TResult>, TFailure> > bind)
 => result.Bind(success => success.Match(bind, () => Result.Success <Option <TResult>, TFailure>(Option.None <TResult>())));
Example #6
0
 public static Task <Result <Option <TResult>, TFailure> > BindIfSomeAsync <TSuccess, TFailure, TResult>(this Result <Option <TSuccess>, TFailure> result, Func <TSuccess, Task <Result <TResult, TFailure> > > bind)
 => result.BindAsync(success => success.MatchAsync(async value => (await bind(value)).Select(Option.Some), () => Task.FromResult(Result.Success <Option <TResult>, TFailure>(Option.None <TResult>()))));