Find a file
2018-05-22 22:23:22 +02:00
old_curriculum move old files to a separate directory 2018-04-26 21:29:11 +02:00
src replace macros with more general methods 2018-05-22 22:23:22 +02:00
.gitignore init new cargo project 2018-04-26 21:41:19 +02:00
Cargo.toml experiment 2018-05-06 18:59:50 +02:00
LICENSE Update LICENSE year. 2016-03-27 15:57:49 -04:00
README.md add console output image 2018-05-22 21:03:19 +02:00

rustlings

A cool thing that is currently in development.

How it's structured

Ideally, like RubyKoans, all exercises can be run by executing one command, in this case cargo run (most likely). This runs src/main.rs, which in turn runs all of the exercises. Each exercise is contained in a Rust file called about_<exercise topic>.rs. A minimal exercise looks somewhat like this:

fn exercise_function() {
  "hello"
}

mod tests {
  use super::*;
  
  pub fn test() {
    verify!("REPLACE ME", exercise_function(), "Function description");
  }
}

pub fn exec() {
  tests::test();
}

Each exercise file is supposed to have one exec function which gets called by the main.rs file. This function, in turn, calls all individual test functions.

The tests themselves can generally be structured in whatever way is desired. Two macros are provided for convenience. The verify! macro is essentially a specialized assert_eq!, but it doesn't panic if the values mismatch, instead it prints out a helpful error message and keeps going. The verify_easy! macro is designed as a drop-in replacement for the verify! macro for if the learner needs help solving the exercise. It prints the expected value, too.

This is roughly what the console output for a simple exercise looks right now:

Keep in mind that this is a very early draft of how things work. Anything here might be changed at any time, and this documentation should be updated accordingly.