public static IAsyncEnumerator <T> Create <T>(params T[] items) => AsyncEnumerator.Create(items as Generic.IEnumerable <T>);
public static IAsyncEnumerator <T> Create <T>(Generic.IEnumerable <T> enumerable) => AsyncEnumerator.Create(enumerable?.GetEnumerator());
public static IAsyncEnumerator <T> Create <T>(Func <Tasks.Task <T> > next, IDisposable disposable = null) { return(AsyncEnumerator.Create(next, disposable is IDisposable ? (Action)((IDisposable)disposable).Dispose : null)); }
public static IAsyncEnumerator <T> Create <T>(Generic.IEnumerator <T> enumerator) { return(enumerator.NotNull() ? AsyncEnumerator.Create(() => Tasks.Task.FromResult(enumerator.Next()), enumerator) : AsyncEnumerator.Empty <T>()); }
public static IAsyncEnumerator <T> Empty <T>() => AsyncEnumerator.Create <T>(Enumerator.Empty <T>());