Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Rustlings 🦀❤️

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!

It is recommended to do the Rustlings exercises in parallel to reading the official Rust book, the most comprehensive resource for learning Rust 📚️

Rust By Example is another recommended resource that you might find helpful. It contains code examples and exercises similar to Rustlings, but online.

Getting Started

Installing Rust

Before installing Rustlings, you need to have the latest version of Rust installed. Visit www.rust-lang.org/tools/install for further instructions on installing Rust. This will also install Cargo, Rust's package/project manager.

🐧 If you're on Linux, make sure you've installed gcc (for a linker).

Deb: sudo apt install gcc. Dnf: sudo dnf install gcc.

🍎 If you're on MacOS, make sure you've installed Xcode and its developer tools by running xcode-select --install.

Installing Rustlings

The following command will download and compile Rustlings:

cargo install rustlings
If the installation fails… (click to expand)
  • Make sure you have the latest Rust version by running rustup update
  • Try adding the --locked flag: cargo install rustlings --locked
  • Otherwise, please report the issue

Initialization

After installing Rustlings, run the following command to initialize the rustlings/ directory:

rustlings init
If the command rustlings can't be found… (click to expand)

You are probably using Linux and installed Rust using your package manager.

Cargo installs binaries to the directory ~/.cargo/bin. Sadly, package managers often don't add ~/.cargo/bin to your PATH environment variable.

The solution is to …

Now, go into the newly initialized directory and launch Rustlings for further instructions on getting started with the exercises:

cd rustlings/
rustlings

Working environment

Editor

Our general recommendation is VS Code with the rust-analyzer plugin. But any editor that supports rust-analyzer should be enough for working on the exercises.

Terminal

While working with Rustlings, please use a modern terminal for the best user experience. The default terminal on Linux and Mac should be sufficient. On Windows, we recommend the Windows Terminal.

Doing exercises

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 📚️

Most exercises contain an error that keeps them from compiling, and it's up to you to fix it! Some exercises contain tests that need to pass for the exercise to be done ✅

Search for TODO and todo!() to find out what you need to change. Ask for hints by entering h in the watch mode 💡

Watch Mode

After initialization, Rustlings can be launched by simply running the command rustlings.

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.

If detecting file changes in the exercises/ directory fails… (click to expand)

You can add the --manual-run flag (rustlings --manual-run) to manually rerun the current exercise by entering r in the watch mode.

Please report the issue with some information about your operating system and whether you run Rustlings in a container or virtual machine (e.g. WSL).

Exercise List

In the watch mode (after launching rustlings), you can enter l 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 (temporarily skip some exercises or go back to a previous one)
  • r: Reset status and file of the selected exercise (you need to reload/reopen its file in your editor afterwards)

See the footer of the list for all possible keys.

Questions?

If you need any help while doing the exercises and the builtin-hints aren't helpful, feel free to ask in the Q&A category of the discussions if your question wasn't asked yet 💡

Third-Party Exercises

Third-party exercises are a set of exercises maintained by the community. You can use the same rustlings program that you installed with cargo install rustlings to run them:

Do you want to create your own set of Rustlings exercises to focus on some specific topic? Or do you want to translate the original Rustlings exercises? Then follow the the guide about third-party exercises!

Continuing On

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.

Uninstalling Rustlings

If you want to remove Rustlings from your system, run the following command:

cargo uninstall rustlings

Contributing

See CONTRIBUTING.md 🔗

Contributors ✨

Thanks to all the wonderful contributors 🎉

About

🦀 Small exercises to get you used to reading and writing Rust code!

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages