«enum»، که کوتاهشدهی enumerations است، یک نوع است که همهی مقادیر ممکن یک داده را محدود میکند. به مقادیر ممکن یک enum، «گونه» میگوییم. 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 خودتان اضافه کنید.