Ключевое слово if в Rust
Что вы узнаете: конструкции управления потоком выполнения в Rust —
if/elseкак выражения,loop/while/for,matchи то, чем они отличаются от аналогов в C/C++. Ключевая мысль: большинство конструкций управления потоком в Rust возвращают значения.
- В Rust
if— это выражение, то есть его можно использовать для присваивания значений, но он также ведёт себя как оператор. ▶ Попробовать
fn main() {
let x = 42;
if x < 42 {
println!("Smaller than the secret of life");
} else if x == 42 {
println!("Is equal to the secret of life");
} else {
println!("Larger than the secret of life");
}
let is_secret_of_life = if x == 42 {true} else {false};
println!("{}", is_secret_of_life);
}
Циклы while и for в Rust
- Ключевое слово
whileможно использовать для цикла, пока выражение истинно
fn main() {
let mut x = 40;
while x != 42 {
x += 1;
}
}
- Ключевое слово
forможно использовать для итерации по диапазонам
fn main() {
// Не выведет 43; используйте 40..=43, чтобы включить последний элемент
for x in 40..43 {
println!("{}", x);
}
}
Циклы loop в Rust
- Ключевое слово
loopсоздаёт бесконечный цикл, пока не встретитсяbreak
fn main() {
let mut x = 40;
// Замените на 'here: loop, чтобы указать необязательную метку цикла
loop {
if x == 42 {
break; // Используйте break x; чтобы вернуть значение x
}
x += 1;
}
}
- Оператор
breakможет включать необязательное выражение, которое используется для присваивания значения выражениюloop - Ключевое слово
continueвозвращает выполнение к началуloop - Метки циклов можно использовать с
breakилиcontinue; они полезны при работе с вложенными циклами
Блоки-выражения в Rust
- Блок-выражение в Rust — это просто последовательность выражений в
{}. Значением блока становится последнее выражение в нём
fn main() {
let x = {
let y = 40;
y + 2 // Примечание: ; здесь не ставится
};
// Обратите внимание на вывод в стиле Python
println!("{x}");
}
- В стиле Rust принято опускать ключевое слово
returnв функциях, используя это правило
fn is_secret_of_life(x: u32) -> bool {
// То же, что if x == 42 {true} else {false}
x == 42 // Примечание: ; здесь не ставится
}
fn main() {
println!("{}", is_secret_of_life(42));
}