mirror of
https://github.com/notohh/rustlings.git
synced 2024-11-22 05:52:23 -05:00
add some basic docs
This commit is contained in:
parent
89f2a986c0
commit
71a6041edf
1 changed files with 36 additions and 0 deletions
36
README.md
36
README.md
|
@ -2,3 +2,39 @@
|
||||||
|
|
||||||
A cool thing that is currently in development.
|
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:
|
||||||
|
|
||||||
|
```rust
|
||||||
|
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.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue