প্রসার এবং প্রতিচ্ছায়া করা
একটি ভেরিয়েবলের স্কোপ সেটির ঘেরা ব্লকের মধ্যে সীমাবদ্ধ।
আপনি ভেরিয়েবলগুলিকে ছায়াবৃত করতে পারেন, এটি বাইরের স্কোপ এবং একই ভেরিয়েবলের নিজেস্ব স্কোপ উভয়ে থেকেই সম্ভব:
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()
এর পরে মান ধরে রাখার জন্য সুবিধাজনক।