static bool DefaultContains(TEnumerable source, TSource value)
 {
     using var enumerator = source.GetEnumerator();
     while (enumerator.MoveNext())
     {
         if (EqualityComparer <TSource> .Default.Equals(enumerator.Current, value))
         {
             return(true);
         }
     }
     return(false);
 }
Example #2
0
 static bool ComparerContains(TEnumerable source, [AllowNull] TSource value, IEqualityComparer <TSource> comparer)
 {
     using var enumerator = source.GetEnumerator();
     while (enumerator.MoveNext())
     {
         if (comparer.Equals(enumerator.Current, value !))
         {
             return(true);
         }
     }
     return(false);
 }
Example #3
0
            static async ValueTask ExecuteAsync(TEnumerable source, AsyncAction <TSource> actionAsync, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                await using (enumerator.ConfigureAwait(false))
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        await actionAsync(enumerator.Current, cancellationToken).ConfigureAwait(false);
                    }
                }
            }
Example #4
0
            static async ValueTask <Option <TSource> > ExecuteAsync(TEnumerable source, int index, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                await using (enumerator.ConfigureAwait(false))
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        if (index-- == 0)
                        {
                            return(Option.Some(enumerator.Current));
                        }
                    }
                }
                return(Option.None);
            }
            static async ValueTask <bool> ComparerContainsAsync(TEnumerable source, [AllowNull] TSource value, IEqualityComparer <TSource> comparer, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                await using (enumerator.ConfigureAwait(false))
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        if (comparer.Equals(enumerator.Current, value !))
                        {
                            return(true);
                        }
                    }
                }
                return(false);
            }
Example #6
0
            static async ValueTask <bool> ExecuteAsync(TEnumerable source, AsyncPredicate <TSource> predicate, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                await using (enumerator.ConfigureAwait(false))
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        if (!await predicate(enumerator.Current, cancellationToken).ConfigureAwait(false))
                        {
                            return(false);
                        }
                    }
                    return(true);
                }
            }
            static async ValueTask <Dictionary <TKey, TSource> > ExecuteAsync(TEnumerable source, AsyncSelector <TSource, TKey> keySelector, IEqualityComparer <TKey>?comparer, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                await using (enumerator.ConfigureAwait(false))
                {
                    var dictionary = new Dictionary <TKey, TSource>(0, comparer);
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        var item = enumerator.Current;
                        dictionary.Add(
                            await keySelector(item, cancellationToken).ConfigureAwait(false),
                            item);
                    }
                    return(dictionary);
                }
            }
Example #8
0
            static async ValueTask <bool> DefaultContainsAsync(TEnumerable source, TSource value, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                try
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        if (EqualityComparer <TSource> .Default.Equals(enumerator.Current, value))
                        {
                            return(true);
                        }
                    }
                }
                finally
                {
                    await enumerator.DisposeAsync().ConfigureAwait(false);
                }
                return(false);
            }
            static async ValueTask <bool> ExecuteAsync(TEnumerable source, TPredicate predicate, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                try
                {
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        if (await predicate.InvokeAsync(enumerator.Current, cancellationToken).ConfigureAwait(false))
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
                finally
                {
                    await enumerator.DisposeAsync().ConfigureAwait(false);
                }
            }
Example #10
0
            static async ValueTask <Dictionary <TKey, TSource> > ExecuteAsync(TEnumerable source, TKeySelector keySelector, IEqualityComparer <TKey>?comparer, CancellationToken cancellationToken)
            {
                var enumerator = source.GetAsyncEnumerator(cancellationToken);

                try
                {
                    // ReSharper disable once HeapView.ObjectAllocation.Evident
                    var dictionary = new Dictionary <TKey, TSource>(0, comparer);
                    while (await enumerator.MoveNextAsync().ConfigureAwait(false))
                    {
                        var item = enumerator.Current;
                        dictionary.Add(
                            await keySelector.InvokeAsync(item, cancellationToken).ConfigureAwait(false),
                            item);
                    }

                    return(dictionary);
                }
                finally
                {
                    await enumerator.DisposeAsync().ConfigureAwait(false);
                }
            }
 static (ElementResult Success, TSource Value) GetSingle <TEnumerable, TEnumerator, TSource>(this TEnumerable source)
 internal Enumerator(AsReadOnlyListEnumerable <TEnumerable, TEnumerator, TSource> enumerable)
 {
     source = enumerable.source;
     count  = source.Count();
     index  = -1;
 }
Example #13
0
 internal Enumerator(AsListEnumerable <TEnumerable, TEnumerator, TSource> enumerable)
 {
     source = enumerable.source;
     count  = enumerable.Count;
     index  = -1;
 }
 internal AsyncEnumerator(TEnumerable enumerable, CancellationToken cancellationToken)
 {
     enumerator             = enumerable.GetEnumerator();
     this.cancellationToken = cancellationToken;
 }
 static async ValueTask <(ElementResult Success, TSource Value)> GetFirstAsync <TEnumerable, TEnumerator, TSource>(this TEnumerable source, CancellationToken cancellationToken)
 static (ElementResult Success, TSource Value) GetFirst <TEnumerable, TEnumerator, TSource>(this TEnumerable source, Predicate <TSource> predicate)