Enum (скорочено від enumerations) - це тип, який обмежує всі можливі значення деяких даних. Можливі значення enum називаються варіантами. 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
Цей тест покликаний показати, як додати варіант до нашого переліку.