এনাম, এনুমারেশনের সংক্ষিপ্ত রূপ, এমন একটি টাইপ যা কিছু ডেটার সম্ভাব্য সব মান সীমিত করে। একটি enum-এর সম্ভাব্য মানগুলোকে ভ্যারিয়েন্ট বলা হয়। এনাম match এবং অন্যান্য কন্ট্রোল ফ্লো অপারেটরের সঙ্গে ভালোভাবে কাজ করে, যাতে আপনি আপনার Rust প্রোগ্রামে উদ্দেশ্য প্রকাশ করতে পারেন।
এই অনুশীলনীতে আপনি সেমি-স্ট্রাকচার্ড লগ মেসেজ তৈরি করবেন।
শুরুতে আপনার কাছে কিছু স্টাব করা ফাংশন এবং নিচের enum থাকবে:
#[derive(Clone, PartialEq, Debug)]
pub enum LogLevel {
Info,
Warning,
Error,
}
আপনার লক্ষ্য হলো নিচের ফরম্যাটে একটি লগ মেসেজ তৈরি করা: "[<LEVEL>]: <MESSAGE>"।
এর জন্য আপনাকে লগ লেভেলগুলোর সাথে মিলে যায় এমন ফাংশন ইমপ্লিমেন্ট করতে হবে।
উদাহরণস্বরূপ, নিচের স্নিপেটটি log ফাংশনের প্রত্যাশিত আউটপুট দেখায়।
log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"
আর info ফাংশনের জন্য:
info("Timezone changed")
// Returns: "[INFO]: Timezone changed"
শুভকামনা!
এই স্যুটে একটি ফিচার-গেটেড টেস্ট আছে। ফিচার গেট আপনার প্রোগ্রামের নির্দিষ্ট কিছু অংশের কম্পাইলেশন পুরোপুরি বন্ধ করে দেয়। এগুলো নিয়ে পরে আলোচনা করা হবে। আপাতত শুধু জেনে রাখুন, একটি টেস্ট আছে যা কেবল একটি বিশেষ টেস্টিং ইনভোকেশন ব্যবহার করলে বিল্ড ও রান করা হয়:
cargo test --features add-a-variant
এই টেস্টটি আপনাকে দেখানোর জন্য যে আপনি কীভাবে আপনার enum-এ একটি ভ্যারিয়েন্ট যোগ করবেন।
Exercism-এ সাইন আপ করুন, Rust ট্র্যাকের 99টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।