IterableIterator

A JavaScript iterable iterator.

This models values that satisfy both the iterable and iterator protocols without assuming iterator helper methods are available.

Unlike IteratorObject.t, this is only the iterable iterator protocol shape. It does not imply that iterator helper methods such as map, filter, or toArray are available.

See Iteration protocols on MDN.

asIterable

RES
let asIterable: t<'yield, 'return, 'next> => Iterable.t<'yield>

asIterable(value) views an iterable iterator as an Iterable.t.

asIterator

RES
let asIterator: t< 'yield, 'return, 'next, > => Iterator.t<'yield, 'return, 'next>

asIterator(value) views an iterable iterator as an Iterator.t.

ignore

RES
let ignore: t<'yield, 'return, 'next> => unit

ignore(iterator) marks iterator as intentionally unused.

make

RES
let make: ( unit => Iterator.result<'yield, 'return>, ) => t<'yield, 'return, unit>

make(nextFn) creates an iterable iterator from a function returning the next result.

The returned value is both an iterator and an iterable.

Examples

RES
let current = ref(0) let iterableIterator = IterableIterator.make(() => { let value = current.contents current := value + 1 if value >= 2 { Iterator.doneWithValue("done") } else { Iterator.value(value) } }) iterableIterator->IterableIterator.next == Yield({value: 0})

next

RES
let next: t< 'yield, 'return, 'next, > => Iterator.result<'yield, 'return>

next(iterator) advances iterator without sending a value back in.

nextValue

RES
let nextValue: ( t<'yield, 'return, 'next>, 'next, ) => Iterator.result<'yield, 'return>

nextValue(iterator, value) advances iterator, sending value back into it.

t

RES
type t<'yield, 'return, 'next> = Iterable.t<'yield>

Type representing an iterable iterator.

toArrayWithMapper

RES
let toArrayWithMapper: ( t<'yield, 'return, 'next>, 'yield => 'mapped, ) => array<'mapped>

toArrayWithMapper(iterator, mapper) consumes iterator, applies mapper to each yielded value, and returns the mapped values as an array.