Tracks
/
Rust
Rust
/
Exercises
/
Semi Structured Logs
Semi Structured Logs

Semi Structured Logs

Learning Exercise

Introduction

Enums, short for enumerations, are a type that limits all possible values of some data. The possible values of an enum are called variants. Enums also work well with match and other control flow operators to help you express intent in your Rust programs.

Instructions

In this exercise you'll be generating semi-structured log messages.

1. Emit semi-structured messages

You'll start with some stubbed functions and the following enum:

#[derive(Clone, PartialEq, Debug)]
pub enum LogLevel {
    Info,
    Warning,
    Error,
}

Your goal is to emit a log message as follows: "[<LEVEL>]: <MESSAGE>". You'll need to implement functions that correspond with log levels.

For example, the below snippet demonstrates an expected output for the log function.

log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"

And for info:

info("Timezone changed")
// Returns: "[INFO]: Timezone changed"

Have fun!

2. Optional further practice

There is a feature-gated test in this suite. Feature gates disable compilation entirely for certain sections of your program. They will be covered later. For now just know that there is a test which is only built and run when you use a special testing invocation:

cargo test --features add-a-variant

This test is meant to show you how to add a variant to your enum.

Edit via GitHub The link opens in a new window or tab
Rust Exercism

Ready to start Semi Structured Logs?

Sign up to Exercism to learn and master Rust with 98 exercises, and real human mentoring, all for free.