Os enums, abreviatura de enumerações, são um tipo que limita todos os valores possíveis de determinados dados. Os valores possíveis de um enum chamam-se variantes. Os enums também funcionam bem com match e outros operadores de fluxo de controlo, que te ajudam a expressar a tua intenção nos teus programas em Rust.
Neste exercício vais gerar mensagens de registo semiestruturadas.
Vais começar com algumas funções por implementar e com o seguinte enum:
#[derive(Clone, PartialEq, Debug)]
pub enum LogLevel {
Info,
Warning,
Error,
}
O teu objetivo é emitir uma mensagem de registo com o seguinte formato: "[<LEVEL>]: <MESSAGE>".
Vais ter de implementar funções que correspondem aos níveis de registo.
Por exemplo, o excerto abaixo mostra um resultado esperado para a função log.
log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"
E para info:
info("Timezone changed")
// Returns: "[INFO]: Timezone changed"
Diverte-te!
Há um teste condicionado por uma funcionalidade nesta suite de testes. As condicionais de funcionalidade desativam por completo a compilação de certas secções do teu programa. Vão ser abordadas mais à frente. Por agora, basta saberes que há um teste que só é compilado e executado quando usas uma invocação de testes especial:
cargo test --features add-a-variant
Este teste serve para te mostrar como adicionar uma variante ao teu enum.
Inscreve-te no Exercism para aprenderes e dominares Rust com 99 exercícios, e mentoria humana real, tudo grátis.