public static void Match <TKey, TValue>(this Maybe <KeyValuePair <TKey, TValue> > maybe, Action <TKey, TValue> Some, Action None) { if (maybe.HasValue) { Some.Invoke(maybe.GetValueOrThrow().Key, maybe.GetValueOrThrow().Value); } else { None.Invoke(); } }
public static Result <T, E> ToResult <T, E>(this Maybe <T> maybe, E error) { if (maybe.HasNoValue) { return(Result.Failure <T, E>(error)); } return(Result.Success <T, E>(maybe.GetValueOrThrow())); }
/// <summary> /// Executes the given async <paramref name="action" /> if the <paramref name="maybe" /> has a value /// </summary> /// <param name="maybe"></param> /// <param name="action"></param> /// <typeparam name="T"></typeparam> public static async Task Execute <T>(this Maybe <T> maybe, Func <T, Task> action) { if (maybe.HasNoValue) { return; } await action(maybe.GetValueOrThrow()).DefaultAwait(); }
public static T GetValueOrDefault <T>(this Maybe <T> maybe, Func <T> defaultValue) { if (maybe.HasNoValue) { return(defaultValue()); } return(maybe.GetValueOrThrow()); }
public static async Task <K> GetValueOrDefault <T, K>(this Maybe <T> maybe, Func <T, Task <K> > selector, Func <Task <K> > defaultValue) { if (maybe.HasNoValue) { return(await defaultValue().DefaultAwait()); } return(await selector(maybe.GetValueOrThrow()).DefaultAwait()); }
public static Maybe <K> Bind <T, K>(this Maybe <T> maybe, Func <T, Maybe <K> > selector) { if (maybe.HasNoValue) { return(Maybe <K> .None); } return(selector(maybe.GetValueOrThrow())); }
public static Task <Maybe <K> > Bind <T, K>(this Maybe <T> maybe, Func <T, Task <Maybe <K> > > selector) { if (maybe.HasNoValue) { return(Maybe <K> .None.AsCompletedTask()); } return(selector(maybe.GetValueOrThrow())); }
public static async Task <T> GetValueOrDefault <T>(this Maybe <T> maybe, Func <Task <T> > defaultValue) { if (maybe.HasNoValue) { return(await defaultValue().DefaultAwait()); } return(maybe.GetValueOrThrow()); }
public static K GetValueOrDefault <T, K>(this Maybe <T> maybe, Func <T, K> selector, Func <K> defaultValue) { if (maybe.HasNoValue) { return(defaultValue()); } return(selector(maybe.GetValueOrThrow())); }
public static async Task <Maybe <K> > Map <T, K>(this Maybe <T> maybe, Func <T, Task <K> > selector) { if (maybe.HasNoValue) { return(Maybe <K> .None); } return(await selector(maybe.GetValueOrThrow()).DefaultAwait()); }
public static Result <T> ToResult <T>(this Maybe <T> maybe, string errorMessage) { if (maybe.HasNoValue) { return(Result.Failure <T>(errorMessage)); } return(Result.Success(maybe.GetValueOrThrow())); }
/// <summary> /// Executes the given <paramref name="action" /> if the <paramref name="maybe" /> has a value /// </summary> /// <param name="maybe"></param> /// <param name="action"></param> /// <typeparam name="T"></typeparam> public static void Execute <T>(this Maybe <T> maybe, Action <T> action) { if (maybe.HasNoValue) { return; } action(maybe.GetValueOrThrow()); }
public static void Match <T>(this Maybe <T> maybe, Action <T> Some, Action None) { if (maybe.HasValue) { Some(maybe.GetValueOrThrow()); } else { None(); } }
public static async Task <Maybe <T> > Where <T>(this Maybe <T> maybe, Func <T, Task <bool> > predicate) { if (maybe.HasNoValue) { return(Maybe <T> .None); } if (await predicate(maybe.GetValueOrThrow()).DefaultAwait()) { return(maybe); } return(Maybe <T> .None); }
public static Maybe <T> Where <T>(this Maybe <T> maybe, Func <T, bool> predicate) { if (maybe.HasNoValue) { return(Maybe <T> .None); } if (predicate(maybe.GetValueOrThrow())) { return(maybe); } return(Maybe <T> .None); }
public static TE Match <TE, TKey, TValue>(this Maybe <KeyValuePair <TKey, TValue> > maybe, Func <TKey, TValue, TE> Some, Func <TE> None) => maybe.HasValue ? Some.Invoke(maybe.GetValueOrThrow().Key, maybe.GetValueOrThrow().Value) : None.Invoke();
public static TE Match <TE, T>(this Maybe <T> maybe, Func <T, TE> Some, Func <TE> None) { return(maybe.HasValue ? Some(maybe.GetValueOrThrow()) : None()); }