From 8bb0a48720207ff415ae4a9832f69b78279ee3df Mon Sep 17 00:00:00 2001 From: neuecc Date: Fri, 5 Jun 2020 15:08:13 +0900 Subject: [PATCH] workaround for struct enumerator await --- .../Plugins/UniTask/Runtime/EnumeratorAsyncExtensions.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/EnumeratorAsyncExtensions.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/EnumeratorAsyncExtensions.cs index 7c658dd..9a32026 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/EnumeratorAsyncExtensions.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/EnumeratorAsyncExtensions.cs @@ -12,10 +12,12 @@ namespace Cysharp.Threading.Tasks { public static class EnumeratorAsyncExtensions { - public static UniTask.Awaiter GetAwaiter(this IEnumerator enumerator) + public static UniTask.Awaiter GetAwaiter(this T enumerator) + where T : IEnumerator { - Error.ThrowArgumentNullException(enumerator, nameof(enumerator)); - return new UniTask(EnumeratorPromise.Create(enumerator, PlayerLoopTiming.Update, CancellationToken.None, out var token), token).GetAwaiter(); + var e = (IEnumerator)enumerator; + Error.ThrowArgumentNullException(e, nameof(enumerator)); + return new UniTask(EnumeratorPromise.Create(e, PlayerLoopTiming.Update, CancellationToken.None, out var token), token).GetAwaiter(); } public static UniTask WithCancellation(this IEnumerator enumerator, CancellationToken cancellationToken)