ফাংশনাল ভাষার বৈশিষ্ট্য: ইটারেটর এবং ক্লোজার
রাস্টের ডিজাইন অনেক বিদ্যমান ভাষা এবং কৌশল থেকে অনুপ্রাণিত হয়েছে, এবং এর মধ্যে একটি গুরুত্বপূর্ণ প্রভাব হলো ফাংশনাল প্রোগ্রামিং (functional programming)। ফাংশনাল স্টাইলে প্রোগ্রামিং করার সময় প্রায়ই ফাংশনগুলোকে ভ্যালু হিসেবে ব্যবহার করা হয়, যেমন তাদেরকে আর্গুমেন্ট হিসেবে পাস করা, অন্য ফাংশন থেকে রিটার্ন করা, এবং পরে এক্সিকিউট করার জন্য ভ্যারিয়েবলে অ্যাসাইন করা ইত্যাদি।
এই অধ্যায়ে, আমরা ফাংশনাল প্রোগ্রামিং কী বা কী নয়, তা নিয়ে বিতর্ক করব না। বরং আমরা রাস্টের এমন কিছু বৈশিষ্ট্য নিয়ে আলোচনা করব যা ফাংশনাল হিসেবে পরিচিত অনেক ভাষার বৈশিষ্ট্যের সাথে সাদৃশ্যপূর্ণ।
বিশেষভাবে, আমরা আলোচনা করব:
- ক্লোজার (Closures), যা ফাংশনের মতো একটি গঠন এবং একে ভ্যারিয়েবলে সংরক্ষণ করা যায়।
- ইটারেটর (Iterators), যা দিয়ে একগুচ্ছ এলিমেন্টকে পর্যায়ক্রমে প্রসেস করা যায়।
- Chapter 12-এর I/O প্রজেক্টকে আরও উন্নত করতে কীভাবে ক্লোজার এবং ইটারেটর ব্যবহার করা যায়।
- ক্লোজার এবং ইটারেটরের পারফরম্যান্স (স্পয়লার: আপনি যা ভাবছেন, এগুলো তার চেয়েও দ্রুত!)
আমরা ইতোমধ্যেই রাস্টের অন্য কিছু বৈশিষ্ট্য, যেমন pattern matching
এবং enums
নিয়ে আলোচনা করেছি, যেগুলো ফাংশনাল স্টাইল দ্বারা প্রভাবিত। যেহেতু সাবলীল (idiomatic) এবং দ্রুতগতির রাস্ট কোড লেখার জন্য ক্লোজার এবং ইটারেটর আয়ত্ত করা একটি গুরুত্বপূর্ণ অংশ, তাই আমরা এই পুরো অধ্যায়টি তাদের জন্যই উৎসর্গ করব।