एनम एन्यूमरेशन का छोटा रूप है। यह एक ऐसा टाइप है जो किसी डेटा की सभी संभावित वैल्यू को सीमित करता है। एक enum की संभावित वैल्यू को वेरिएंट कहा जाता है। एनम match और अन्य कंट्रोल फ्लो ऑपरेटर के साथ भी अच्छी तरह काम करता है। इससे आप अपने Rust प्रोग्राम में अपना आशय व्यक्त कर पाते हैं।
इस अभ्यास में आप सेमी-स्ट्रक्चर्ड लॉग संदेश बनाएँगे।
शुरुआत में आपको कुछ ऐसे फंक्शन मिलेंगे जो अभी अधूरे हैं, और यह एनम भी:
#[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
इस टेस्ट का उद्देश्य आपको यह दिखाना है कि अपने एनम में एक वेरिएंट कैसे जोड़ा जाता है।