# `otarustlings` [gitlab](https://gitlab.com/otafablab/otarustlings) [crates.io](https://crates.io/crates/otarustlings) [docs.rs](https://docs.rs/otarustlings) [build status](https://gitlab.com/otafablab/otarustlings/-/pipelines) [course material](https://otafablab.gitlab.io/rust-lukiokurssi) `otarustlings` exercise platform. Clone of [rustlings](https://github.com/rust-lang/rustlings). The point of `otarustlings` is to learn Rust with hands on exercises and small projects. ## Installation ```console cargo install otarustlings ``` > Requires Rust 1.56 or higher (2021 edition) ## Usage ![asciinema](./otarustlings.gif) The `otarustlings` exercises are initialized after which the user starts `otarustlings` to constantly retry compiling and testing the exercise. The user is supposed to make the exercises compile and pass all the tests. The semantics of the exercises are usually written as comments. If you see a `_` in an invalid position, you need to replace it with something else. If you see a `// TODO` or `todo!()` you are supposed to do what's called _programming_, or _coding_, at the position of the comment. Once the exercise is completed, i.e. it compiles and passes the tests, it is marked with a check mark `✓` in the menu. Try to make all of them green! ### `init` To create the initial exercise directory structure and write the exercises, use: ```console otarustlings init ``` The command creates a directory called `exercises` in the current directory. > Note: `init` does not overwrite old exercises. ### `start` To start testing your changes, use: ```console otarustlings start ``` The command must be issued in the parent directory of `exercises`, i.e. the same directory [`init`](#init) was called in. The first thing that is shown is a menu of the exercises. Using up and down arrows, one can change the selection and pressing enter will start testing it. All changes to the file are monitored and tested. The test output is shown in the terminal. To return to menu, press `Q` or `ESC`. To quit `otarustlings`, press `Q` or `ESC` in the menu.