Exemplo n.º 1
0
        /// <summary>
        /// Creates a buffered memory set.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="set">The set.</param>
        /// <returns></returns>
        public static async Task <Memory.Set <T> > ToMemorySetAsync <T>(this ISet <T> set, CancellationToken cancellationToken = default)
        {
            var memorySet = new Memory.Set <T>();

            await foreach (var item in set.AsEnumerableAsync(cancellationToken).ConfigureAwait(false))
            {
                await memorySet.AddAsync(item, cancellationToken);
            }
            return(memorySet);
        }
Exemplo n.º 2
0
        public override async Task <bool> TryAddAsync(
            TKey key,
            ISet <TItem> value,
            bool overwrite = false,
            CancellationToken cancellationToken = default)
        {
            if (!(value is Set <TItem> set))
            {
                set = new Set <TItem>();
                await value
                .AsEnumerableAsync(cancellationToken)
                .ForEachAwaitAsync(i => set.AddAsync(i, cancellationToken), cancellationToken)
                .ConfigureAwait(false);
            }

            return(await base.TryAddAsync(key, set, overwrite, cancellationToken).ConfigureAwait(false));
        }