public static Dictionary <TKey, TSource> ToDictionary <TEnumerable, TEnumerator, TSource, TKey, TKeySelector>(this TEnumerable source, TKeySelector keySelector, IEqualityComparer <TKey>?comparer = default) where TEnumerable : IValueReadOnlyCollection <TSource, TEnumerator> where TEnumerator : struct, IEnumerator <TSource> where TKey : notnull where TKeySelector : struct, IFunction <TSource, TKey> => source.Count is 0 // ReSharper disable once HeapView.ObjectAllocation.Evident ? new Dictionary <TKey, TSource>() : ValueEnumerableExtensions.ToDictionary <TEnumerable, TEnumerator, TSource, TKey, TKeySelector>(source, keySelector, comparer);
static Dictionary <TKey, TElement> ToDictionary <TEnumerable, TEnumerator, TSource, TKey, TElement, TKeySelector, TElementSelector, TPredicate>(this TEnumerable source, TKeySelector keySelector, TElementSelector elementSelector, IEqualityComparer <TKey>?comparer, TPredicate predicate) where TEnumerable : IValueReadOnlyCollection <TSource, TEnumerator> where TEnumerator : struct, IEnumerator <TSource> where TKey : notnull where TKeySelector : struct, IFunction <TSource, TKey> where TElementSelector : struct, IFunction <TSource, TElement> where TPredicate : struct, IFunction <TSource, bool> => source.Count is 0 // ReSharper disable once HeapView.ObjectAllocation.Evident ? new Dictionary <TKey, TElement>() : ValueEnumerableExtensions.ToDictionary <TEnumerable, TEnumerator, TSource, TKey, TElement, TKeySelector, TElementSelector, TPredicate>(source, keySelector, elementSelector, comparer, predicate);
public static Dictionary <TKey, TElement> ToDictionary <TSource, TKey, TElement>(this ImmutableQueue <TSource> source, Selector <TSource, TKey> keySelector, NullableSelector <TSource, TElement> elementSelector, IEqualityComparer <TKey>?comparer = default) where TKey : notnull => ValueEnumerableExtensions.ToDictionary <ValueWrapper <TSource>, ValueWrapper <TSource> .Enumerator, TSource, TKey, TElement>(new ValueWrapper <TSource>(source), keySelector, elementSelector, comparer);
public static Dictionary <TKey, TElement> ToDictionary <TSource, TKey, TElement>(this ImmutableStack <TSource> source, NullableSelector <TSource, TKey> keySelector, NullableSelector <TSource, TElement> elementSelector) => ValueEnumerableExtensions.ToDictionary <ValueWrapper <TSource>, ValueWrapper <TSource> .Enumerator, TSource, TKey, TElement>(new ValueWrapper <TSource>(source), keySelector, elementSelector);
public static Dictionary <TKey, TSource> ToDictionary <TSource, TKey>(this ImmutableStack <TSource> source, NullableSelector <TSource, TKey> keySelector, IEqualityComparer <TKey>?comparer) => ValueEnumerableExtensions.ToDictionary <ValueWrapper <TSource>, ValueWrapper <TSource> .Enumerator, TSource, TKey>(new ValueWrapper <TSource>(source), keySelector, comparer);