if Statement

if statements follow C syntax:


#![allow(unused)]
fn main() {
if foo(x) {
    print("It's true!");
} else if bar == baz {
    print("It's true again!");
} else if baz.is_foo() {
    print("Yet again true.");
} else if foo(bar - baz) {
    print("True again... this is getting boring.");
} else {
    print("It's finally false!");
}
}

Braces Are Mandatory

Unlike C, the condition expression does not need to be enclosed in parentheses ‘(‘ .. ‘)‘, but all branches of the if statement must be enclosed within braces ‘{‘ .. ‘}‘, even when there is only one statement inside the branch.

Like Rust, there is no ambiguity regarding which if clause a branch belongs to.


#![allow(unused)]
fn main() {
// Rhai is not C!
if (decision) print("I've decided!");
//            ^ syntax error, expecting '{' in statement block
}

if-Expressions

Like Rust, if statements can also be used as expressions, replacing the ? : conditional operators in other C-like languages.


#![allow(unused)]
fn main() {
// The following is equivalent to C: int x = 1 + (decision ? 42 : 123) / 2;
let x = 1 + if decision { 42 } else { 123 } / 2;
x == 22;

let x = if decision { 42 }; // no else branch defaults to '()'
x == ();
}