namespace ErsatzTV.Infrastructure; public static class AsyncEnumerable { /// /// Creates an which yields no results, similar to /// . /// public static IAsyncEnumerable Empty() => EmptyAsyncEnumerator.Instance; private class EmptyAsyncEnumerator : IAsyncEnumerator, IAsyncEnumerable { public static readonly EmptyAsyncEnumerator Instance = new(); public IAsyncEnumerator GetAsyncEnumerator(CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); return this; } public T Current => default; public ValueTask DisposeAsync() => default; public ValueTask MoveNextAsync() => new(false); } }