محدوده‌ها و سایه‌گذاری

‏محدوده (scope) یک متغیر محدود به بلاک محاصره‌کننده آن است.

شما می توانید متغیرها را سایه بزنید، هم آنهایی که از اسکوپ‌های بیرونی هستند و هم متغیرهایی که از اسکوپ یکسان هستند:

fn main() {
    let a = 10;
    println!("before: {a}");
    {
        let a = "hello";
        println!("inner scope: {a}");

        let a = true;
        println!("shadowed in inner scope: {a}");
    }

    println!("after: {a}");
}
  • با افزودن یک «b» در بلوک داخلی در آخرین مثال، و سپس تلاش برای دسترسی به آن در خارج از بلوک، نشان دهید که دامنه یک متغیر محدود است.
  • Shadowing is different from mutation, because after shadowing both variables' memory locations exist at the same time. Both are available under the same name, depending where you use it in the code.
  • یک متغیر سایه‌دار می تواند انواع داده‌ای متفاوتی داشته باشد.
  • سایه زدن در ابتدا مبهم به نظر می رسد، اما برای نگه داشتن مقادیر پس از .unwrap() مناسب است.