You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
olivia 850a13e913 oh, commit this 6 years ago
old_curriculum move old files to a separate directory 6 years ago
src oh, commit this 6 years ago
.gitignore init new cargo project 6 years ago
Cargo.toml experiment 6 years ago
LICENSE Update LICENSE year. 8 years ago
README.md update docs 6 years ago

README.md

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, there doesn't have to be a "tests" module, for example. Two macros are provided for convenience. The verify helper function 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 function is designed as a drop-in replacement for the verify function 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.