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
let asIterable: t<'yield, 'return, 'next> => Iterable.t<'yield>asIterable(value) views an iterable iterator as an Iterable.t.
asIterator
let asIterator: t<
'yield,
'return,
'next,
> => Iterator.t<'yield, 'return, 'next>asIterator(value) views an iterable iterator as an Iterator.t.
ignore
let ignore: t<'yield, 'return, 'next> => unitignore(iterator) marks iterator as intentionally unused.
make
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
RESlet 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
let next: t<
'yield,
'return,
'next,
> => Iterator.result<'yield, 'return>next(iterator) advances iterator without sending a value back in.
nextValue
let nextValue: (
t<'yield, 'return, 'next>,
'next,
) => Iterator.result<'yield, 'return>nextValue(iterator, value) advances iterator, sending value back into it.
t
type t<'yield, 'return, 'next> = Iterable.t<'yield>Type representing an iterable iterator.
toArrayWithMapper
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.