using System; using System.Runtime.CompilerServices; namespace MoonTools.ECS; public ref struct ReverseSpanEnumerator { private ReadOnlySpan Span; private int Index; public ReverseSpanEnumerator GetEnumerator() => this; public T Current => Span[Index]; [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool MoveNext() { if (Index > 0) { Index -= 1; return true; } return false; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public ReverseSpanEnumerator(Span span) { Span = span; Index = span.Length; } public static ReverseSpanEnumerator Empty => new ReverseSpanEnumerator(); }