প্রসার এবং প্রতিচ্ছায়া করা

একটি ভেরিয়েবলের স্কোপ সেটির ঘেরা ব্লকের মধ্যে সীমাবদ্ধ।

আপনি ভেরিয়েবলগুলিকে ছায়াবৃত করতে পারেন, এটি বাইরের স্কোপ এবং একই ভেরিয়েবলের নিজেস্ব স্কোপ উভয়ে থেকেই সম্ভব:

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 লাগিয়ে সেটাকে বাইরে থেকে অ্যাক্সেস করবার চেষ্টা করে এটা দেখান যে একটি ভ্যারিয়েবলের স্কোপ সীমাবদ্ধ থাকে।
  • ছায়াবৃত করা এবং পরিব্যক্তির মধ্যে তফাৎ আছে, কারণ ছায়াবৃত করবার পরে উভয় ভেরিয়েবলের-ই মেমরি অবস্থান একই সময়ে বিদ্যমান থাকে। আপনি কোডে কোথায় ব্যবহার করেন তার উপর নির্ভর করে উভয়ই একই নামে উপলব্ধ।
  • একটি ভ্যারিয়েবল যেটি অন্য ভ্যারিয়েবলের ছায়া হিসেবে বানানো হয়েছে সেটির থেকে আলাদা টাইপ ধারণ করতেই পারে।
  • ছায়া করা প্রথমে অস্পষ্ট দেখায়, কিন্তু .unwrap() এর পরে মান ধরে রাখার জন্য সুবিধাজনক।