Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/examples/mutable-iteration.nct

mutable-iteration.nct

use std/io.print

use std/vec.Vec

struct Counter {
    value: i32,
}

func main(): i32! {
    var counters = Vec [Counter { value: 1 }, Counter { value: 2 }, Counter { value: 3 }]
    var expected: i32 = 11
    for counter in &+counters {
        counter.value = counter.value + 10
        if counter.value != expected {
            return 1
        }
        expected = expected + 1
    }
    var readonly_total: i32 = 0
    for counter in &counters {
        readonly_total = readonly_total + counter.value
    }
    if readonly_total != 36 {
        return 1
    }
    var owned_total: i32 = 0
    for counter in move counters {
        owned_total = owned_total + counter.value
    }
    if owned_total != 36 {
        return 1
    }
    print("mutable iteration updated every element\n")?
    return 0
}