{"id":5479,"date":"2026-09-24T01:10:41","date_gmt":"2026-09-24T04:10:41","guid":{"rendered":"https:\/\/tucumandevelopers.com\/index.php\/2026\/09\/24\/100-exercises-to-learn-rust-updated\/"},"modified":"2026-09-24T01:10:41","modified_gmt":"2026-09-24T04:10:41","slug":"100-exercises-to-learn-rust-updated","status":"publish","type":"post","link":"https:\/\/tucumandevelopers.com\/index.php\/2026\/09\/24\/100-exercises-to-learn-rust-updated\/","title":{"rendered":"100 Exercises to Learn Rust, Updated"},"content":{"rendered":"<div>\n<div>\n<section data-clarity-region=\"article\">\n<div>\n<p><a href=\"\/rust\/category\/learning-courses\/\">Learning Courses<\/a> <a href=\"\/rust\/category\/rustrover\/\">RustRover<\/a><\/p>\n<h2 id=\"major-updates\">100 Exercises to Learn Rust, Updated<\/h2>\n<p><em>100 Exercises to Learn Rust<\/em> is our adaptation of <a href=\"https:\/\/rust-exercises.com\/100-exercises\/\" target=\"_blank\" rel=\"noopener\">Mainmatter\u2019s course<\/a> of the same name, written by Luca Palmieri, Principal Engineering Consultant at Mainmatter, and it has just received its biggest update since we released it a year ago. Palmieri has been writing Rust since 2018, first at TrueLayer and then at AWS, and he wrote <a href=\"https:\/\/www.zero2prod.com\/\" target=\"_blank\" rel=\"noopener\"><em>Zero to Production in Rust<\/em><\/a>. Mainmatter also delivers this material directly, as an instructor-led workshop for teams. Our version is a JetBrains Academy course that opens inside RustRover. The course is free, and RustRover is free for non-commercial use.<\/p>\n<p>In the sections below, we cover what the course is, what has changed in this update, what the \u201cfast track\u201d for the course looks like, and how to get the most out of AI assistance throughout your experience.<\/p>\n<h2>What the course is about<\/h2>\n<p>The course teaches Rust through exercises rather than explanations. Each lesson is a short piece of theory followed by a real Rust crate with a test suite attached. Most lessons start with a <code>todo!()<\/code> and ask you to fill it in.<\/p>\n<p>The majority of the exercises share the same theme: a ticket management system. It starts as a <code>struct<\/code> with a title, a description, and a status, and ends up serving tickets to multiple threads over an asynchronous REST API. Concepts are introduced as the project needs them, for example <code>Result<\/code> and <code>enum<\/code> for errors when validation can fail, <code>HashMap<\/code> when tickets need to be looked up by ID, or <code>Arc<\/code> and <code>Mutex<\/code> when multiple clients access the store at once. And if an important concept doesn\u2019t fit the ticket management system theme, it is introduced with an appropriate self-contained exercise.<\/p>\n<p>The course assumes fluency in at least one other programming language, but no systems background or prior experience managing memory manually. Over eight chapters, it covers ownership and borrowing, traits, enums and pattern matching, error handling, collections and iterators, lifetimes, threads and channels, and futures. The course culminates in a final challenge, where theory is set aside in favor of a single, comprehensive exercise that tests your mastery of the preceding eight chapters.<\/p>\n<p>Our adaptation removes setup. There\u2019s nothing to clone, no branch to check out, and no workshop runner to install. You open the course in RustRover, and the first task is already there with tests attached and a button that runs them in place.<\/p>\n<figure><\/figure>\n<h2>What\u2019s new in this update<\/h2>\n<p><strong>A rebuilt introduction.<\/strong> The course now opens with five short lessons: what you\u2019re going to build, a quick tour of the interface, two minutes of IDE setup, an FAQ, and then your first Rust code. You know what you\u2019re in for before you write anything.<\/p>\n<p><strong>An FAQ with ten answers.<\/strong> Some of the questions come straight from the learners, while others are just our advice in disguise.<\/p>\n<figure><\/figure>\n<p><strong>The final challenge.<\/strong> All parts of the course contribute to one project: a ticket management system. At the end of the course, your final challenge will be to turn it into an asynchronous REST API. You\u2019ll edit the <code>Cargo.toml<\/code> file and choose the dependencies yourself. It\u2019s the one part of the course where you\u2019ll be designing something with real crates, roughly the same way you would at work.<\/p>\n<p>A <a href=\"https:\/\/www.jetbrains.com\/help\/rust\/http-client-in-product-code-editor.html#create-an-http-request-scratch-file\" target=\"_blank\" rel=\"noopener\">requests.http<\/a> file specifies the API. It sends the requests your server should handle and states the responses it expects, and you run it against your own server from inside the editor. It checks your API\u2019s behavior, not your Rust code, so every implementation decision is yours, and you can still tell whether it works. The task description also contains a sequence of hints, from a small nudge to a full explanation, that you can use as much or as little of as you need.<\/p>\n<figure><video controls=\"\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2026\/09\/final-challenge-screencast.mov\"><\/video><\/figure>\n<p><strong>All tests are visible.<\/strong> Every task shows the assertions that are used to check your answer, so you\u2019ll know exactly what\u2019s expected instead of guessing.<\/p>\n<p><strong>An experiment with dev and release profiles.<\/strong> In the arithmetic chapter, you compile the same overflowing code under both the dev and release <a href=\"https:\/\/doc.rust-lang.org\/cargo\/reference\/profiles.html\" target=\"_blank\" rel=\"noopener\">Cargo profiles<\/a> and watch the behavior change. Built with the dev profile, the program panics on overflow, while it wraps silently when built with the release profile. Most courses merely describe this in one sentence, but here you get to see it happen.<\/p>\n<figure><\/figure>\n<h2>In a hurry? Start at the end<\/h2>\n<p>You don\u2019t have to work front to back (and the FAQ says this explicitly). If you\u2019ve written Rust before, or if you\u2019d simply rather tackle one real program than be walked through a hundred small ones, you can skip straight to the final challenge.<\/p>\n<p>The final challenge ties together everything the course covers: the ticket model, enums and error handling, the collection work, shared state and locking, and the whole async chapter by definition. You\u2019ll quickly see which of those areas you need to revisit, because gaps in your understanding will surface as you build the API. You can hop back into those specific parts of the course with concrete questions \u2013 and you\u2019ll get much more out of them as a result.<\/p>\n<p>It\u2019s also the quickest way to find out what it\u2019s like to use RustRover for real-world projects.<\/p>\n<h2>Getting the most out of AI<\/h2>\n<p>You can easily access AI through the built-in chat. It\u2019s best to use AI for explanations rather than asking it to write code for you. A couple of good habits to be in: Always add explicit instructions not to change your code. And <a href=\"https:\/\/blog.jetbrains.com\/rust\/2023\/12\/14\/the-most-common-rust-compiler-errors-as-encountered-in-rustrover-part-1\/\">when the compiler rejects your code<\/a>, paste the error into the AI chat and ask it to walk you through what\u2019s wrong instead of asking for the fix.<\/p>\n<figure><\/figure>\n<p>While you are working on the course, however, you should turn AI code completion off. The exercises are short and well represented in training data, so a completion tool will often finish them before you\u2019ve even read the task. This defeats the purpose of having these tasks in the first place: It\u2019s about getting stuck and working out a solution on your own. The <em>Set up your IDE<\/em> lesson will show you how to switch off AI code completion.<\/p>\n<figure><\/figure>\n<h2>Getting started<\/h2>\n<p>The course is free, RustRover is free for non-commercial use, and there\u2019s nothing to clone.<\/p>\n<ol>\n<li><strong>Download and install RustRover.<\/strong> If you don\u2019t have a Rust toolchain yet, the IDE will fetch one for you.<\/li>\n<li><strong>Turn on the educational features.<\/strong> On the <em>Welcome <\/em>screen, switch to the <em>Learn <\/em>tab, find the <em>Learn to program<\/em> widget, and click <em>Enable Access<\/em>. This will install and activate the JetBrains Academy plugin.<\/li>\n<li><strong>Select the course.<\/strong>\n<ol>\n<li>On the <em>Learn <\/em>tab, click <em>Get Started<\/em> and choose <em>100 Exercises to Learn Rust<\/em>.<\/li>\n<li>Once the JetBrains Academy plugin is installed, you can find all the courses under <em>File <\/em>| <em>Learn and Teach<\/em> | <em>Browse Courses<\/em>.&nbsp;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>The adaptation is open source, so if something looks wrong to you, say so. Issues and pull requests are welcome on <a href=\"https:\/\/github.com\/JetBrains\/100-exercises-to-learn-rust\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/p>\n<\/p><\/div>\n<p> <a href=\"#\"><\/a> <\/section>\n<div>\n<p><h2>Discover more<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Fuente: <a href=\"https:\/\/blog.jetbrains.com\/rust\/2026\/09\/23\/100-exercises-to-learn-rust\/\">Art\u00edculo original<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learning Courses RustRover 100 Exercises to Learn Rust, Updated 100 Exercises to Learn Rust is our adaptation of Mainmatter\u2019s course of the same name, written by Luca Palmieri, Principal Engineering Consultant at Mainmatter, and it has just received its biggest update since we released it a year ago. Palmieri has been writing Rust since 2018, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5478,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"webixso_pending_account_ids":""},"categories":[46],"tags":[],"class_list":["post-5479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-jetbrain"],"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts\/5479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/comments?post=5479"}],"version-history":[{"count":0,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/posts\/5479\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/media\/5478"}],"wp:attachment":[{"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/media?parent=5479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/categories?post=5479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tucumandevelopers.com\/index.php\/wp-json\/wp\/v2\/tags?post=5479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}