summary refs log tree commit diff stats
path: root/rust/semi-structured-logs/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'rust/semi-structured-logs/README.md')
-rw-r--r--rust/semi-structured-logs/README.md64
1 files changed, 64 insertions, 0 deletions
diff --git a/rust/semi-structured-logs/README.md b/rust/semi-structured-logs/README.md
new file mode 100644
index 0000000..955299c
--- /dev/null
+++ b/rust/semi-structured-logs/README.md
@@ -0,0 +1,64 @@
+# Semi Structured Logs
+
+Welcome to Semi Structured Logs on Exercism's Rust Track.
+If you need help running the tests or submitting your code, check out `HELP.md`.
+If you get stuck on the exercise, check out `HINTS.md`, but try and solve it without using those first :)
+
+## 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:
+
+```rust
+#[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.
+
+```rust
+log(LogLevel::Error, "Stack overflow")
+// Returns: "[ERROR]: Stack overflow"
+```
+
+And for `info`:
+
+```rust
+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:
+
+```sh
+cargo test --features add-a-variant
+```
+
+This test is meant to show you how to add a variant to your enum.
+
+## Source
+
+### Created by
+
+- @efx
\ No newline at end of file