{"id":"glaphyre/iter","name":"iter","scope":"glaphyre","platform":"roblox","description":"Lazy, Rust-inspired iterators for Luau","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"SEE LICENSE IN LICENSE","licenseRating":"safe","licenseCaveats":[],"licenseVerified":false,"dependencies":{},"integrity":"32e50255538242a568f8a269e9fcf6988d4a1712ff51de439c1b7f1db591438e","likes":0,"downloads":0,"install":"forest install glaphyre/iter","url":"https://forest.dev/p/roblox/glaphyre/iter","files":"https://api.forest.dev/ai/package/roblox/glaphyre/iter/files","readme":"# iter\n\nA lazy-eval iterator library for Luau, inspired by Rust's `Iterator` trait.\n\n## Installation\n\n`iter` is available on [forest](https://forest.dev/p/roblox/glaphyre/iter) and can be installed via the following command:\n\n```bash\nforest i glaphyre/iter\n```\n\n```lua\nlocal iter = require(\"@glaphyre/iter\")\n```\n\n## Example\n\n```lua\nlocal iter = require(\"./iter\")\n\nlocal total = iter.values({ 1, 2, 3, 4, 5 })\n    :filter(function(n)\n        return n % 2 == 0\n    end)\n    :map(function(n)\n        return n * 10\n    end)\n    :fold(0, function(acc, n)\n        return acc + n\n    end)\n\nprint(total) --> 60\n```\n\n## API\n\n```luau\n-- Constructors\nfunction iter.new<T>(next: () -> T?, size_hint: (() -> (number, number?))?): Iter<T>\nfunction iter.keys<K, V>(iterable: { [K]: V }): Iter<K>\nfunction iter.values<K, V>(iterable: { [K]: V }): Iter<V>\nfunction iter.empty(): Iter\nfunction iter.iota(start: number, step: number): Iter<number>\n\n-- Iterator Methods\nfunction Iter.map<A, B>(self: Iter<A>, mapper: (A) -> B): Iter<B>\nfunction Iter.filter<T>(self: Iter<T>, filter: (T) -> boolean): Iter<T>\nfunction Iter.take<T>(self: Iter<T>, count: number): Iter<T>\nfunction Iter.zip<A, B>(self: Iter<A>, other: Iter<B>): Iter<Pair<A, B>>\nfunction Iter.enumerate<T>(self: Iter<T>): Iter<Pair<number, T>>\n\n-- Iterator Consumers\nfunction Iter.fold<T, A>(self: Iter<T>, folder: (A, T) -> A, initial: T): A\nfunction Iter.reduce<T>(self: Iter<T>, reducer: (T, T) -> T): T?\nfunction Iter.for_each<T>(self: Iter<T>, callback: (T) -> ()): ()\nfunction Iter.drain<T>(self: Iter<T>): ()\nfunction Iter.any<T>(self: Iter<T>, predicate: (T) -> boolean): boolean\nfunction Iter.all<T>(self: Iter<T>, predicate: (T) -> boolean): boolean\nfunction Iter.find<T>(self: Iter<T>, predicate: (T) -> boolean): T?\nfunction Iter.position<T>(self: Iter<T>, predicate: (T) -> boolean): number?\nfunction Iter.count<T>(self: Iter<T>): number\nfunction Iter.collect<T>(self: Iter<T>): { T }\nfunction Iter.unzip<A, B>(self: Iter<Pair<A, B>>): ({ A }, { B })\n```\n\n## Testing\n\nTests are written for [`zune`](https://github.com/Scythe-Technology/zune)'s built-in testing suite:\n\n```bash\nzune test tests/iter.spec.luau\n```\n","readmeTruncated":false}