submodule对gitea不管用,所以直接拉了一份拉格兰

This commit is contained in:
2025-02-04 16:29:43 +08:00
parent b0bfc803e3
commit d149a2ea0f
1023 changed files with 43308 additions and 18 deletions

View File

@@ -0,0 +1,27 @@
namespace Lagrange.OneBot.Utility.Fallbacks;
public class FallbackAsync<T>
{
private readonly List<Func<CancellationToken, Task<T?>>> _executors = [];
internal static FallbackAsync<T> Create()
{
return new();
}
public FallbackAsync<T> Add(Func<CancellationToken, Task<T?>> executor)
{
_executors.Add(executor);
return this;
}
public async Task<T> ExecuteAsync(Func<CancellationToken, Task<T>> @default, CancellationToken token = default)
{
foreach (var executor in _executors)
{
var result = await executor(token);
if (result != null) return result;
}
return await @default(token);
}
}