gen
Source: compiler/src/builtin_docs/keywords.md Declares a generator function (a coroutine): gen fn name(…) { … }.
Calling it allocates a suspended coroutine handle and runs nothing. Each
resume runs it to the next yield (or its return), and for can iterate
it. gen is only a keyword directly before fn (or static fn).
gen fn countdown(int n) {
let i = n;
while i > 0 {
yield i;
i = i - 1;
}
}
fn main() {
let total = 0;
for v in countdown(3) {
total = total + v;
}
}
See also#
fn: Declares a function, a method, or (written in an expression) an anonymous function.let: Declares a mutable local variable.const: Declares a binding that cannot be reassigned: a local, a module constant, or a class field that is set only bynew.static: Declares a module-level or class-level slot shared by the whole program, or a method withoutself.readonly: A read-only view of a value: nothing reachable through it can be changed.if: Runs a block when aboolcondition is true.else: Introduces the branch of anifthat runs when its condition is false (or its pattern does not match).while: Repeats a block while aboolcondition is true.