Skip to content

Iter

The @std/iter module provides low-level iterator helper structs.

It exposes:

NameKindDescription
ProgressstructRepresents one iterator step.
EndvalueA progress value where end is true.
IteratorstructWraps a function that returns Progress.

Progress represents one iterator step.

FieldTypeDescription
keyanyStep key or index.
valueanyStep value.
endboolWhether iteration has finished.
import iter from "@std/iter"
let step = iter.Progress(0, "first")
println(step.key)
println(step.value)
println(step.end)

End is a ready-made Progress value with end set to true.

import iter from "@std/iter"
let done = iter.End
println(done.end)

Iterator wraps a function that returns a Progress.

The wrapped function type is:

let nextStep: fn() -> iter.Progress

Example:

import iter from "@std/iter"
let index = 0
let values = ["a", "b", "c"]
fn nextValue() iter.Progress {
if index >= len(values) {
return iter.End
}
let current = iter.Progress(index, values[index])
index = index + 1
return current
}
let iterator = iter.Iterator(nextValue)
let step = iterator.next()
while !step.end {
println(step.key, step.value)
step = iterator.next()
}

Returns the next Progress.

Returns: Progress

let step = iterator.next()