Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Условный оператор if

Как и в большинстве языков программирования, в Rust условный оператор if тоже есть.

Его синтаксис имеет вид:

if условие_1 {
    выражение_1
} else if условие_2 {
    выражение_2
} else {
    выражение_3
}

Например:

fn main() {
    let a = 10;

    if a % 2 == 0 {
        println!("a is even");
    } else {
        println!("a is odd");
    }
}

В Rust, в отличие от C и Java, тело условной ветки обязательно должно быть обрамлено в фигурные скобки, даже если ветка содержит только одно выражение.

Результат оператора if

Оператор if является выражением, т.е. возвращает значение, которое можно присвоить переменной. Результатом всего if выражения является результат последнего выражения в отработавшей ветке.

#![allow(unused)]
fn main() {
let a = -5;
let mod_a: i32 =
    if a < 0 {
        -a
    } else {
        a
    };
println!("{mod_a}"); // 5
}

Здесь важно заметить, что для того, чтобы оператор if возвращал значение, последнее выражение в условной ветке НЕ должно заканчиваться знаком ;. Дело в том, что, как мы уже сказали, тело условной ветки всегда должно быть обрамлено в фигурные скобки, а это значит, что она является скоупом. Как мы уже знаем из главы Скоупы, если в конце последнего выражения скоупа стоит ;, то скоуп возвращает ().

#![allow(unused)]
fn main() {
let a = -5;
let mod_a: () =
    if a < 0 {
        -a; // то же самое, что и { -a; () }
    } else {
        a;  // то же самое, что и { a; () }
    };
println!("{mod_a:?}"); // Напечатает ()
}

Tip

В английском языке есть принципиальная разница между понятиями statement (утверждение) и expression (выражение).

Словом statement называют код, который выполняется и ничего не возвращает. Например, в C/Java конструкция, заканчивающаяся знаком ; является statement.

Expression — это выражение, которое вычисляет и возвращает значение. Примером expression в C/Java является 1 + 1, так как оно возвращает 2.

В русском языке, как правило, и statement и expression переводят как “выражение”, что создаёт путаницу.