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.