/
crypt
/
NumbersPlay
Обзор
Документация
Войти
/
crypt
/
NumbersPlay
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Assets/Plugins/UniTask/Runtime/Linq/Repeat.cs
68 строк
2 KB
Crypt
start
16 ноя 2025, 14:28
16 ноя 2025, 14:28
1482007
Код
Авторство
О чём код?
using Cysharp.Threading.Tasks.Internal; using System.Threading; namespace Cysharp.Threading.Tasks.Linq { public static partial class UniTaskAsyncEnumerable { public static IUniTaskAsyncEnumerable<TElement> Repeat<TElement>(TElement element, int count) { if (count < 0) throw Error.ArgumentOutOfRange(nameof(count)); return new Repeat<TElement>(element, count); } } internal class Repeat<TElement> : IUniTaskAsyncEnumerable<TElement> { readonly TElement element; readonly int count; public Repeat(TElement element, int count) { this.element = element; this.count = count; } public IUniTaskAsyncEnumerator<TElement> GetAsyncEnumerator(CancellationToken cancellationToken = default) { return new _Repeat(element, count, cancellationToken); } class _Repeat : IUniTaskAsyncEnumerator<TElement> { readonly TElement element; readonly int count; int remaining; CancellationToken cancellationToken; public _Repeat(TElement element, int count, CancellationToken cancellationToken) { this.element = element; this.count = count; this.cancellationToken = cancellationToken; this.remaining = count; } public TElement Current => element; public UniTask<bool> MoveNextAsync() { cancellationToken.ThrowIfCancellationRequested(); if (remaining-- != 0) { return CompletedTasks.True; } return CompletedTasks.False; } public UniTask DisposeAsync() { return default; } } } }