Kapsamlar (Scopes) ve Gölgeleme (Shadowing)

Bir değişkenin kapsamı (scope) onu çevreleyen blokla sınırlıdır.

Hem dış kapsamlardaki (outer scopes) değişkenleri hem de aynı kapsamdaki değişkenleri gölgeleyebilirsiniz (shadow):

fn main() {
    let a = 10;
    println!("önce: {a}");
    {
        let a = "merhaba";
        println!("iç kapsam: {a}");

        let a = true;
        println!("iç kapsamda gölgelendi: {a}");
    }

    println!("sonra: {a}");
}
  • Son örnekte iç bloğa (inner block) bir b ekleyerek ve ardından bu bloğun dışından ona erişmeye çalışarak bir değişkenin kapsamının (scope) sınırlı olduğunu gösterin.
  • Gölgeleme (shadowing) mutasyondan (mutation) farklıdır çünkü gölgeleme sonrasında her iki değişkenin de bellek konumları aynı anda mevcuttur. Her ikisi de kodda nerede kullandığınıza bağlı olarak aynı ad altında mevcuttur.
  • Bir gölgeleme (shadowing) değişkeni farklı bir türe sahip olabilir.
  • Gölgelendirme ilk başta anlaşılmaz görünebilir, ancak .unwrap() sonrasındaki değerleri korumak için kullanışlıdır.