diff --git a/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj b/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj
index 66004bf..6976ef9 100644
--- a/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj
+++ b/src/AStar.Dev.Functional.Extensions/AStar.Dev.Functional.Extensions.csproj
@@ -9,7 +9,7 @@
true
snupkg
AStar.Dev.Functional.Extensions
- 0.4.0
+ 0.4.2
Readme.md
AStar Development, Jason Barden
AStar Development
@@ -26,7 +26,7 @@
Readme.md
AStar.Dev.Functional.Extensions
AStar Development 2025
- Add an extension method to convert a failures exception message to an instance of the ErrorResponse class.
+ Add a pair of additional extension methods for MatchAsync to handle additional scenarios.
astar.png
diff --git a/src/AStar.Dev.Functional.Extensions/Result.cs b/src/AStar.Dev.Functional.Extensions/Result.cs
index 145bc90..31d75ae 100644
--- a/src/AStar.Dev.Functional.Extensions/Result.cs
+++ b/src/AStar.Dev.Functional.Extensions/Result.cs
@@ -89,6 +89,7 @@ public async Task MatchAsync(
Error err => await onFailure(err.Reason),
_ => throw new InvalidOperationException($"Unrecognized result type: {GetType().Name}")
};
+
#pragma warning restore S3060
///
diff --git a/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs b/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs
index ea99a3c..0bd1659 100644
--- a/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs
+++ b/src/AStar.Dev.Functional.Extensions/ResultExtensions.cs
@@ -10,6 +10,44 @@ namespace AStar.Dev.Functional.Extensions;
[SuppressMessage("ReSharper", "GrammarMistakeInComment")]
public static class ResultExtensions
{
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task MatchAsync(
+ this Task> resultTask,
+ Func> onSuccess,
+ Func> onFailure)
+ {
+ var result = await resultTask;
+ return await result.Match(onSuccess, onFailure);
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task MatchAsync(
+ this Task> resultTask,
+ Func onSuccess,
+ Func onFailure)
+ {
+ var result = await resultTask;
+ return result.Match(onSuccess, onFailure);
+ }
+
///
/// Transforms the success value of a using the specified mapping function.
///
@@ -24,7 +62,7 @@ public static class ResultExtensions
///
public static Result Map(
this Result result,
- Func map) =>
+ Func map) =>
result.Match>(
ok => new Result.Ok(map(ok)),
err => new Result.Error(err)