From 9776cb75938ba5150ba0f44b255ecb2729253599 Mon Sep 17 00:00:00 2001 From: LukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com> Date: Tue, 14 May 2024 14:18:14 +0200 Subject: [PATCH] Improve landing page. --- book/src/01_intro/00_welcome.md | 76 ++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/book/src/01_intro/00_welcome.md b/book/src/01_intro/00_welcome.md index a26b49a..e4ad231 100644 --- a/book/src/01_intro/00_welcome.md +++ b/book/src/01_intro/00_welcome.md @@ -2,21 +2,69 @@ Welcome to **"100 Exercises To Learn Rust"**! -This course will teach you Rust's core concepts, one exercise at a time. -In roughly 100 exercises, you'll go from knowing nothing about Rust to feeling productive on your own. +This course will teach you Rust's core concepts, one exercise at a time. +You'll learn about Rust's syntax, its type system, its standard library, and its ecosystem. + +We don't assume any prior knowledge of Rust, but we assume you know at least +another programming language. +We also don't assume any prior knowledge of systems programming or memory management. Those +topics will be covered in the course. + +In other words, we'll be starting from scratch! +You'll build up your Rust knowledge in small, manageable steps. +By the end of the course, you will have solved ~100 exercises, enough to +feel comfortable working on small to medium-sized Rust projects. + +## Methodology + +This course is based on the "learn by doing" principle. +It has been designed to be interactive and hands-on. + +[Mainmatter](https://mainmatter.com/rust-consulting/) developed this course +to be delivered in a classroom setting, over 4 days: each attendee advances +through the lessons at their own pace, with an experienced instructor providing +guidance, answering questions and diving deeper into the topics as needed. +If you're interested in attending one of our training sessions, or if you'd like to +bring this course to your company, please [get in touch](https://mainmatter.com/contact/). + +You can also follow the course on your own, but we recommend you find a friend or +a mentor to help you along the way should you get stuck. ## Structure -Each section in this course introduces a new concept or feature of the Rust language. +On the left side of the screen, you can see that the course is divided into sections. +Each section introduces a new concept or feature of the Rust language. To verify your understanding, each section is paired with an exercise that you need to solve. -Each exercise is structured as a Rust package, located in the `exercises` folder. +You can find the exercises in the +[companion GitHub repository](https://github.com/mainmatter/100-exercises-to-learn-rust). +Before starting the course, make sure to clone the repository to your local machine: + +```bash +# If you have an SSH key set up with GitHub +git clone git@github.com:mainmatter/100-exercises-to-learn-rust.git +# Otherwise, use the HTTPS URL: +# +# git clone https://github.com/mainmatter/100-exercises-to-learn-rust.git +``` + +We also recommend you work on a branch, so you can easily track your progress and pull +in updates from the main repository, if needed: + +```bash +cd 100-exercises-to-learn-rust +git checkout -b my-solutions +``` + +All exercises are located in the `exercises` folder. +Each exercise is structured as a Rust package. The package contains the exercise itself, instructions on what to do (in `src/lib.rs`), and a test suite to automatically verify your solution. ### `wr`, the workshop runner -To navigate through the course, you will be using the `wr` CLI (short for "workshop runner"). +To verify your solutions, we've provided a tool that will guide you through the course. +It is the `wr` CLI (short for "workshop runner"). Install it with: ```bash @@ -33,8 +81,24 @@ wr `wr` will verify the solution to the current exercise. Don't move on to the next section until you've solved the exercise for the current one. +> We recommend committing your solutions to Git as you progress through the course, +> so you can easily track your progress and "restart" from a known point if needed. +> +> You can find solutions to all exercises in the `solutions` branch of the GitHub repository. + Enjoy the course! ## References -- The exercise for this section is located in `exercises/01_intro/00_welcome` \ No newline at end of file +- The exercise for this section is located in `exercises/01_intro/00_welcome` + +## Author + +This course was written by [Luca Palmieri](https://www.lpalmieri.com/), Principal Engineering +Consultant at [Mainmatter](https://mainmatter.com/rust-consulting/). +Luca has been working with Rust since 2018, initially at TrueLayer and then at AWS. +Luca is the author of ["Zero to Production in Rust"](https://zero2prod.com), +the go-to resource for learning how to build backend applications in Rust. +He is also the author and maintainer of a variety of open-source Rust projects, including +[`cargo-chef`](https://github.com/LukeMathWalker/cargo-chef), +[Pavex](https://pavex.dev) and [`wiremock`](https://github.com/LukeMathWalker/wiremock-rs). \ No newline at end of file