Блоки и области видимости
- Блок в Rust содержит последовательность выражений, заключённую в фигурные скобки
{}. - Последнее выражение блока определяет значение и тип всего блока.
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
let z = 13;
let x = {
let y = 10;
dbg!(y);
z - y
};
dbg!(x);
// dbg!(y);
}
Если последнее выражение заканчивается ;, то результатом блока (и его типом) будет ().
Область видимости переменной ограничена объемлющим блоком.
-
Можно объяснить, что
dbg!— это макрос Rust, который выводит и возвращает значение заданного выражения для быстрой отладки. -
Можно показать, как меняется значение блока при изменении последней строки в блоке. Например, можно добавить/убрать точку с запятой или использовать
return. -
Продемонстрируйте, что попытка обратиться к
yза пределами её области видимости не скомпилируется. -
Значения фактически «освобождаются» при выходе из области видимости, даже если их данные на стеке всё ещё лежат там.