Examples

Each example below is a complete program that was compiled with the released ruxc and run. Compile with ruxc file.rux out && ./out.

Sum of a range

fn main() -> int {
    let mut i = 0;
    let mut total = 0;
    while i < 5 {
        total = total + i;
        i = i + 1;
    }
    print(to_str(total) + "
");
    return 0;
}
return main();

Prints 10.

Factorial

fn factorial(n: int) -> int {
    if n <= 1 {
        return 1;
    }
    return n * factorial(n - 1);
}
fn main() -> int {
    print(to_str(factorial(5)) + "
");
    return 0;
}
return main();

Prints 120.

Struct and function

struct Point { x: int, y: int }
fn manhattan(p: Point) -> int {
    return p.x + p.y;
}
fn main() -> int {
    let p = Point { x: 3, y: 4 };
    print(to_str(manhattan(p)) + "
");
    return 0;
}
return main();

Prints 7.

Enum classification

enum Sign { Neg, Zero, Pos }
fn sign(n: int) -> Sign {
    if n < 0 { return Sign.Neg; }
    if n > 0 { return Sign.Pos; }
    return Sign.Zero;
}
fn label(s: Sign) -> str {
    match s {
        Sign.Neg => { return "negative"; }
        Sign.Zero => { return "zero"; }
        Sign.Pos => { return "positive"; }
    }
    return "";
}
fn main() -> int {
    print(label(sign(0 - 9)) + "
");
    return 0;
}
return main();

Prints negative.