Forest Logo
search
package_2

iter

By @glaphyre

Roblox

iter

A lazy-eval iterator library for Luau, inspired by Rust's Iterator trait.

Installation

iter is available on forest and can be installed via the following command:

forest i glaphyre/iter
local iter = require("@glaphyre/iter")

Example

local iter = require("./iter")

local total = iter.values({ 1, 2, 3, 4, 5 })
    :filter(function(n)
        return n % 2 == 0
    end)
    :map(function(n)
        return n * 10
    end)
    :fold(0, function(acc, n)
        return acc + n
    end)

print(total) --> 60

API

-- Constructors
function iter.new<T>(next: () -> T?, size_hint: (() -> (number, number?))?): Iter<T>
function iter.keys<K, V>(iterable: { [K]: V }): Iter<K>
function iter.values<K, V>(iterable: { [K]: V }): Iter<V>
function iter.empty(): Iter
function iter.iota(start: number, step: number): Iter<number>

-- Iterator Methods
function Iter.map<A, B>(self: Iter<A>, mapper: (A) -> B): Iter<B>
function Iter.filter<T>(self: Iter<T>, filter: (T) -> boolean): Iter<T>
function Iter.take<T>(self: Iter<T>, count: number): Iter<T>
function Iter.zip<A, B>(self: Iter<A>, other: Iter<B>): Iter<Pair<A, B>>
function Iter.enumerate<T>(self: Iter<T>): Iter<Pair<number, T>>

-- Iterator Consumers
function Iter.fold<T, A>(self: Iter<T>, folder: (A, T) -> A, initial: T): A
function Iter.reduce<T>(self: Iter<T>, reducer: (T, T) -> T): T?
function Iter.for_each<T>(self: Iter<T>, callback: (T) -> ()): ()
function Iter.drain<T>(self: Iter<T>): ()
function Iter.any<T>(self: Iter<T>, predicate: (T) -> boolean): boolean
function Iter.all<T>(self: Iter<T>, predicate: (T) -> boolean): boolean
function Iter.find<T>(self: Iter<T>, predicate: (T) -> boolean): T?
function Iter.position<T>(self: Iter<T>, predicate: (T) -> boolean): number?
function Iter.count<T>(self: Iter<T>): number
function Iter.collect<T>(self: Iter<T>): { T }
function Iter.unzip<A, B>(self: Iter<Pair<A, B>>): ({ A }, { B })

Testing

Tests are written for zune's built-in testing suite:

zune test tests/iter.spec.luau

Package Details

Install command (Click to copy)


Version

0.1.0

License

SEE LICENSE IN LICENSE

check_circle

Safe for commercial use

Automated license review — not legal advice.