Structs and Enums

RUDRA has structs for grouped data and enums for a fixed set of named values.

Structs

struct Point { x: int, y: int }
fn main() {
    let p = Point { x: 3, y: 4 };
    print(p.x);
    print(p.y);
}

Enums

enum Color { Red, Green, Blue }
fn name(c: Color) -> str {
    match c {
        Red => { return "red"; }
        Green => { return "green"; }
        Blue => { return "blue"; }
    }
}
fn main() {
    print(name(Green));
}

This program prints green.

Pattern matching

A match over an enum is checked for exhaustiveness: every variant must be handled, or a wildcard pattern must cover the rest.