Enum은 enumeration의 줄임말로, 어떤 데이터가 가질 수 있는 모든 값을 제한하는 타입이에요. enum이 가질 수 있는 값들은 배리언트라고 해요. Enum은 match를 비롯한 다른 제어 흐름 연산자와도 잘 어울려서, Cairo 프로그램에서 의도한 바를 표현하는 데 도움이 돼요.
이 연습 문제에서는 반정형 로그 메시지를 만들어요.
몇 가지 스텁 함수와 아래 열거형으로 시작해요.
#[derive(Drop, Clone, PartialEq, Debug)]
pub enum LogLevel {
Info,
Warning,
Error,
Debug
}
목표는 "[<LEVEL>]: <MESSAGE>" 형식으로 로그 메시지를 출력하는 거예요.
각 로그 레벨에 대응하는 함수를 구현해야 해요.
예를 들어, 아래 코드 조각은 log 함수의 예상 출력을 보여줘요.
log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"
그리고 info는 이렇게요.
info("Timezone changed")
// Returns: "[INFO]: Timezone changed"
즐겁게 해봐요!