/
GeekNerd
/
ServerModelingProject
Обзор
Документация
Войти
/
GeekNerd
/
ServerModelingProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Assets/Plugins/UniTask/Runtime/Linq/Repeat.cs
68 строк
2 KB
Gorney-Alex
Init
30 май 2026, 19:05
30 май 2026, 19:05
3cdcc49
Код
Авторство
О чём код?
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; } } } }