if/else

if-elseを用いた条件分岐は他の言語に似ています。多くの言語では条件式の中を括弧でくくる必要がありますが、Rustではその必要はありません。条件式の直後にはブロックが続きます。if-elseは式の一種で、いずれの分岐先でも返り値の型は同一でなくてはなりません。

fn main() {
    let n = 5;

    if n < 0 {
        print!("{} is negative", n);
    } else if n > 0 {
        print!("{} is positive", n);
    } else {
        print!("{} is zero", n);
    }

    let big_n =
        if n < 10 && n > -10 {
            println!(", and is a small number, increase ten-fold");

            // この式は`i32`を返します。
            10 * n
        } else {
            println!(", and is a big number, halve the number");

            // ここでも返り値の型は`i32`でなくてはなりません。
            n / 2
            // TODO ^ セミコロン`;`をつけて返り値を返さないようにしてみましょう
        };
    //   ^ ここにセミコロンを付けるのを忘れないように!
    //   `let`による変数束縛の際には必ず必要です。

    println!("{} -> {}", n, big_n);
}