2023-05-17 11:11:49 -04:00
< div class = "oranda-hide" >
2024-04-18 11:17:21 -04:00
# Rustlings 🦀❤️
2015-09-14 22:32:54 -04:00
2023-05-17 11:11:49 -04:00
< / div >
2024-04-18 11:17:21 -04:00
Greetings and welcome to Rustlings.
This project contains small exercises to get you used to reading and writing Rust code.
This includes reading and responding to compiler messages!
2018-11-26 06:27:14 -05:00
2024-04-18 11:17:21 -04:00
It is recommended to do the Rustlings exercises in parallel to reading [the official Rust book ](https://doc.rust-lang.org/book/ ), the most comprehensive resource for learning Rust 📚️
2018-11-26 09:07:34 -05:00
2024-04-18 11:17:21 -04:00
[Rust By Example ](https://doc.rust-lang.org/rust-by-example/ ) is another recommended resource that you might find helpful.
It contains code examples and exercises similar to Rustlings, but online.
2018-11-26 09:07:34 -05:00
2019-01-09 15:02:47 -05:00
## Getting Started
2024-04-18 11:17:21 -04:00
### Installing Rust
2019-03-06 14:25:27 -05:00
2024-04-18 11:17:21 -04:00
Before installing Rustlings, you need to have _Rust installed_ .
Visit [www.rust-lang.org/tools/install ](https://www.rust-lang.org/tools/install ) for further instructions on installing Rust.
This'll also install _Cargo_ , Rust's package/project manager.
2019-03-06 14:25:27 -05:00
2024-04-18 11:17:21 -04:00
🐧 If you're on Linux, make sure you've installed `gcc` (for a linker). Deb: `sudo apt install build-essential gcc` . Dnf: `sudo dnf install gcc` .
2018-11-26 06:27:14 -05:00
2024-04-18 11:17:21 -04:00
🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by typing `xcode-select --install` .
2018-11-26 06:27:14 -05:00
2024-04-18 11:17:21 -04:00
### Installing Rustlings
2018-11-26 09:07:34 -05:00
2024-04-18 11:17:21 -04:00
The following command will download and compile Rustlings:
2018-11-26 09:07:34 -05:00
2024-04-25 13:54:03 -04:00
<!-- TODO: Remove @6 .0.0-beta.x -->
2019-01-23 15:36:08 -05:00
```bash
2024-04-25 19:55:44 -04:00
cargo install rustlings@6.0.0-beta.3
2019-01-23 15:36:08 -05:00
```
2024-04-25 20:00:42 -04:00
< details >
2024-04-25 21:17:35 -04:00
< summary >
**If the installation fails…** (_click to expand_)
< / summary >
2024-04-25 19:55:44 -04:00
<!-- TODO: Remove @6 .0.0-beta.x -->
- Make sure you have the latest Rust version by running `rustup update` .
2024-04-25 21:17:35 -04:00
- Try adding the `--locked` flag: `cargo install rustlings@6.0.0-beta.3 --locked`
- Otherwise, please [report the issue ](https://github.com/rust-lang/rustlings/issues/new ).
2024-04-25 19:49:36 -04:00
2024-04-25 20:00:42 -04:00
< / details >
2024-04-18 11:17:21 -04:00
### Initialization
2019-01-23 15:36:08 -05:00
2024-04-18 11:17:21 -04:00
After installing Rustlings, run the following command to initialize the `rustlings/` directory:
2018-11-26 09:07:34 -05:00
2019-01-23 15:36:08 -05:00
```bash
2024-04-18 11:17:21 -04:00
rustlings init
2019-01-23 15:36:08 -05:00
```
2024-04-18 11:17:21 -04:00
Now, go into the newly initialized directory and run Rustlings for further instructions on getting started with the exercises:
2021-06-30 06:05:49 -04:00
```bash
2024-04-18 11:17:21 -04:00
cd rustlings/
rustlings
2021-06-30 06:05:49 -04:00
```
2024-04-18 11:17:21 -04:00
## Doing exercises
2024-04-25 21:17:35 -04:00
The exercises are sorted by topic and can be found in the subdirectory `exercises/<topic>` .
For every topic, there is an additional `README.md` file with some resources to get you started on the topic.
We highly recommend that you have a look at them before you start 📚️
2024-04-18 11:17:21 -04:00
Most exercises contain an error that keeps them from compiling, and it's up to you to fix it!
2024-04-25 21:17:35 -04:00
Some exercises contain tests that need to pass for the exercise to be done.
### Watch Mode
To run the exercises, launch Rustlings:
2019-11-11 12:02:56 -05:00
2022-03-29 09:04:52 -04:00
```bash
2024-04-18 11:17:21 -04:00
rustlings
2019-11-11 12:02:56 -05:00
```
2018-11-26 06:27:14 -05:00
2024-04-25 21:17:35 -04:00
This will start the _watch mode_ which walks you through the exercises in a predefined order (what we think is best for newcomers).
It will rerun the current exercise automatically every time you change the exercise's file in the `exercises/` directory.
2024-04-18 11:17:21 -04:00
2024-04-25 21:17:35 -04:00
< details >
< summary >
2021-06-30 06:05:49 -04:00
2024-04-25 21:17:35 -04:00
**If detecting file changes in the `exercises/` directory fails…** (_click to expand_)
2021-06-30 06:05:49 -04:00
2024-04-25 21:17:35 -04:00
< / summary >
2022-03-29 09:04:52 -04:00
2024-04-25 21:17:35 -04:00
You can add the `--manual-run` flag (`rustlings --manual-run`) to manually rerun the current exercise by entering `r` or `run` in the watch mode.
2021-04-18 10:07:30 -04:00
2024-04-25 21:17:35 -04:00
Please [report the issue ](https://github.com/rust-lang/rustlings/issues/new ) with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).
2019-01-23 15:36:08 -05:00
2024-04-25 21:17:35 -04:00
< / details >
2024-04-18 11:17:21 -04:00
2024-04-25 21:17:35 -04:00
### Exercise List
2024-04-18 11:17:21 -04:00
2024-04-25 21:17:35 -04:00
In the [watch mode ](#watch-mode ) (after launching `rustlings` ), you can enter `l` or `list` to open the interactive exercise list.
The list allows you to…
- See the status of all exercises (done or pending)
- `c` : Continue at another exercise (temporarelly skip some exercises or go back to a previous one)
- `r` : Reset the status and file of an exercise (you need to reload/reopen its file in your editor afterwards)
See the footer of the list for all possible keys.
2024-04-18 11:17:21 -04:00
2020-07-12 03:44:11 -04:00
## Continuing On
2024-04-18 11:17:21 -04:00
<!-- TODO: Mention third - party exercises -->
Once you've completed Rustlings, put your new knowledge to good use!
Continue practicing your Rust skills by building your own projects, contributing to Rustlings, or finding other open-source projects to contribute to.
2020-07-12 03:44:11 -04:00
2020-12-29 05:23:08 -05:00
## Uninstalling Rustlings
2024-04-25 21:17:35 -04:00
If you want to remove Rustlings from your system, run the following command:
2020-12-29 05:23:08 -05:00
2022-03-29 09:04:52 -04:00
```bash
2020-12-29 05:23:08 -05:00
cargo uninstall rustlings
```
2024-04-18 11:17:21 -04:00
That's it!
2020-12-29 05:23:08 -05:00
2019-01-23 15:36:08 -05:00
## Contributing
2024-04-25 21:17:35 -04:00
See [CONTRIBUTING.md ](https://github.com/rust-lang/rustlings/blob/main/CONTRIBUTING.md ) 🔗
2024-04-18 10:17:33 -04:00
## Contributors ✨
2024-04-18 11:17:21 -04:00
Thanks to [all the wonderful contributors ](https://github.com/rust-lang/rustlings/graphs/contributors ) 🎉