enum은 enumeration의 줄임말로, 어떤 데이터가 가질 수 있는 모든 값을 제한하는 타입이에요. 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
이 테스트는 열거형에 변형을 추가하는 방법을 보여주기 위한 거예요.