[3]i32 values = [10, 20, 30];
// A single binding receives each index (usize).
for index := range values {
// Two inferred bindings: usize index and i32 value.
for (index, value) := range values {
// Typed declarations use '='. Each value is an independent copy.
for (u32 index, i32 value) = range values {
// '_' discards a binding.
for (_, value) := range values {
if total != 60 { return 1; }
// Use a counted loop to modify the original array.
loop usize index = 0; index < values.len(); index++ {
if index == 1 { proceed; } // still executes index++
if values[0] != 11 or values[1] != 20 or values[2] != 31 { return 2; }
// Inclusive bounds are valid for a numeric counter.
loop u32 x = 1; x <= 3; x++ {