Області видимості та затінення

Область видимості змінної обмежується блоком, що її охоплює.

Ви можете затіняти змінні, як із зовнішніх областей, так і змінні з тієї ж області:

fn main() {
    let a = 10;
    println!("до: {a}");
    {
        let a = "привіт";
        println!("внутрішня область видимості: {a}");

        let a = true;
        println!("затінений у внутрішній області видимості: {a}");
    }

    println!("після: {a}");
}
  • Покажіть, що область видимості змінної обмежена, додавши b у внутрішньому блоці в останньому прикладі, а потім спробувавши отримати доступ до неї за межами цього блоку.
  • Затінення відрізняється від мутації тим, що після затінення обидві ділянки пам'яті змінних існують одночасно. Обидві змінні доступні під одним і тим же ім'ям, залежно від того, де ви їх використовуєте у коді.
  • Змінна затінення може мати інший тип.
  • Затінення спочатку виглядає незрозумілим, але є зручним для збереження значень після .unwrap().