From 546d24c2ec798c1b16580ab8b60bef123dc742b3 Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Wed, 29 Jan 2025 22:23:58 -0500 Subject: [PATCH] async --- MaybeError/AsyncExtensions.cs | 104 ++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 MaybeError/AsyncExtensions.cs diff --git a/MaybeError/AsyncExtensions.cs b/MaybeError/AsyncExtensions.cs new file mode 100644 index 0000000..b14de6e --- /dev/null +++ b/MaybeError/AsyncExtensions.cs @@ -0,0 +1,104 @@ +using MaybeError.Errors; + +namespace MaybeError; + +public static class AsyncExtensions +{ + #region ValueMaybe + + public static async Task ValueOrDefaultAsync(this Task> task, T defaultValue) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(defaultValue); + } + + public static async ValueTask ValueOrDefaultAsync(this ValueTask> task, T defaultValue) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(defaultValue); + } + + public static async Task ValueOrDefaultAsync(this Task> task) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(); + } + + public static async ValueTask ValueOrDefaultAsync(this ValueTask> task) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(); + } + + public static async Task AsAsync(this Task> task, Func predicate) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.As(predicate); + } + + public static async ValueTask AsAsync(this ValueTask> task, Func predicate) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.As(predicate); + } + + public static async Task AsOrDefaultAsync(this Task> task, Func predicate) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate); + } + + public static async ValueTask AsOrDefaultAsync(this ValueTask> task, Func predicate) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate); + } + + public static async Task AsOrDefaultAsync(this Task> task, Func predicate, R defaultValue) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate, defaultValue); + } + + public static async ValueTask AsOrDefaultAsync(this ValueTask> task, Func predicate, R defaultValue) where T : struct where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate, defaultValue); + } + + #endregion ValueMaybe + + #region Maybe + + public static async Task ValueOrDefaultAsync(this Task> task, T defaultValue) where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(defaultValue); + } + + public static async Task ValueOrDefaultAsync(this Task> task) where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.ValueOrDefault(); + } + + public static async Task AsAsync(this Task> task, Func predicate) where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.As(predicate); + } + + public static async Task AsOrDefaultAsync(this Task> task, Func predicate) where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate); + } + + public static async Task AsOrDefaultAsync(this Task> task, Func predicate, R defaultValue) where E : Error + { + var maybe = await task.ConfigureAwait(false); + return maybe.AsOrDefault(predicate, defaultValue); + } + + #endregion Maybe +} \ No newline at end of file