Browse Source
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>pull/13673/head
committed by
GitHub
45 changed files with 230 additions and 150 deletions
@ -0,0 +1,48 @@ |
|||
using System.Collections.Generic; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Avalonia.Utilities; |
|||
|
|||
internal static class AsyncEnumerableHelper |
|||
{ |
|||
public static IAsyncEnumerable<T> AsAsyncEnumerable<T>(this IEnumerable<T> enumerable) |
|||
=> new EnumerableAsyncWrapper<T>(enumerable); |
|||
|
|||
private sealed class EnumerableAsyncWrapper<T> : IAsyncEnumerable<T> |
|||
{ |
|||
private readonly IEnumerable<T> _enumerable; |
|||
|
|||
public EnumerableAsyncWrapper(IEnumerable<T> enumerable) |
|||
=> _enumerable = enumerable; |
|||
|
|||
public IAsyncEnumerator<T> GetAsyncEnumerator(CancellationToken cancellationToken = default) |
|||
=> new EnumeratorAsyncWrapper<T>(_enumerable.GetEnumerator(), cancellationToken); |
|||
} |
|||
|
|||
private sealed class EnumeratorAsyncWrapper<T> : IAsyncEnumerator<T> |
|||
{ |
|||
private readonly IEnumerator<T> _enumerator; |
|||
private readonly CancellationToken _cancellationToken; |
|||
|
|||
public EnumeratorAsyncWrapper(IEnumerator<T> enumerator, CancellationToken cancellationToken) |
|||
{ |
|||
_enumerator = enumerator; |
|||
_cancellationToken = cancellationToken; |
|||
} |
|||
|
|||
public T Current |
|||
=> _enumerator.Current; |
|||
|
|||
public ValueTask<bool> MoveNextAsync() |
|||
=> _cancellationToken.IsCancellationRequested ? |
|||
new(Task.FromCanceled<bool>(_cancellationToken)) : |
|||
new(_enumerator.MoveNext()); |
|||
|
|||
public ValueTask DisposeAsync() |
|||
{ |
|||
_enumerator.Dispose(); |
|||
return default; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
namespace Avalonia.Generators; |
|||
|
|||
internal static class TrimmingMessages |
|||
{ |
|||
public const string Roslyn = "Roslyn is not getting trimmed."; |
|||
} |
|||
Loading…
Reference in new issue