SkillAgentSearch skills...

Iterator

Iterator Library for C# and Unity

Install / Use

/learn @jacksondunstan/Iterator
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

About

  • A no-GC version of C#'s IEnumerator<T> and LINQ
  • Inspired by C++'s <iterator> and <algorithm> headers
  • Useful for any C# project with additional support for Unity

Getting Started

Unity Projects

Clone or download this repository and copy the JacksonDunstanIterator directory somewhere inside your Unity project's Assets directory.

Non-Unity Projects

Clone or download this repository and add all the .cs files directly under the JacksonDunstanIterator directory to your C# project.

Usage

There are three iterator types:

  • ArrayIterator<T> for managed arrays (T[])
  • ListIterator<T> for List<T>
  • NativeArrayIterator<T> for NativeArray<T> (automatically compiled out when Unity 2018.1+ isn't available)

They all have the same API. Here's the basics of using ArrayIterator<T>:

// Get an array
int[] array = new [] { 30, 10, 20, 40 };

// Get an iterator to the beginning of the array
ArrayIterator<int> begin = array.Begin();

// Get the value of the iterator
int val = begin.GetCurrent();

// Move to the next element
ArrayIterator<int> second = begin.GetNext();

// Get an iterator to one past the end of the array
ArrayIterator<int> end = array.End();

// Reverse [ 10, 20, 40] so the array is [ 30, 40, 20, 10 ]
second.Reverse(end);

// Search for an element satisfying a condition
ArrayIterator<int> it20 = begin.FindIf(end, e => e < 25);

There is much more functionality available. See the source for more.

To read about the making of this library, see the Enumerables Without the Garbage series:

License

MIT

Related Skills

View on GitHub
GitHub Stars182
CategoryDevelopment
Updated7mo ago
Forks15

Languages

C#

Security Score

87/100

Audited on Aug 18, 2025

No findings