# Ultimate Rust 2: Intermediate Concepts This is the companion repository for the `Ultimate Rust 2: Intermediate Concepts` (the followup to the popular [Ultimate Rust Crash Course]). _UR2IC_ will be published independently online in the second half of 2021 and is also presented live as part of some O'Reilly virtual events such as [Rust in 3 Weeks], or taught in-person for corporate training. You will get the most out of this training experience by doing the [exercises] in this repository and watching (or attending) the instructor-led training. In other words, this repository is for you hands-on-learners! I use macOS, and that is what I developed this course on. Everything _ought_ to work similarly on major Linux distributions and Windows. Please [contact me](mailto:nathan@agileperception.com) ASAP if you have trouble with anything on this page. _Just getting started with Rust? Check out the prerequisite for this course: [Ultimate Rust Crash Course]_ ## Install Rust & Prepare Your Development Environment Rust is required for this course! The latest stable version is always recommended. See [the repository for the previous course] for instructions on how to install Rust, prepare your development environment, and helpful resources. ## Exercises Please clone this repository! These exercises are designed as Rust projects for you to edit on your own computer. The exercises are separate Rust projects inside the `exercises/` subdirectory. For each exercise, you should: - Open the corresponding`exercise/EXERCISE_NAME` directory in your IDE/Editor - Navigate to the same directory with your Terminal application (so you can run `cargo run`, etc.) - Open up the `src/main.rs` file. - Follow the numbered exercise instructions in the code comments. If you encounter any problems with the exercises, please feel free to use the online course communication tools to contact me, or [open an discussion]. Either way. 😄 For your convenience, here is a list of all the exercises, with links to view the code on GitHub. - [Exercise - Idiomatic Rust](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/idiomatic) - [Exercise - Documentation](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/docs) - [Exercise - Closures & Iterators](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/closures_iterators) - [Exercise - Common Traits](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/traits) - [Exercise - Errors](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/errors) - See also Jane Lusby's 2020 RustConf Session, [Error Handling Isn't All About Errors] - [Exercise - Testing](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/testing) - [Exercise - Logging](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/logging) - [Exercise - Threads & Channels](https://github.com/CleanCut/ultimate_rust2/tree/main/exercise/threads_channels) ## Examples This course goes over a lot of code in lecture format. Much of the code from the lectures can be found in the [`example/`] directory in this repository. ## Contribution All contributions are assumed to be dual-licensed under MIT/Apache-2. ## License Distributed under the terms of both the MIT license and the Apache License (Version 2.0). See [license/APACHE](license/APACHE) and [license/MIT](license/MIT). ## Sponsor If you like the work I do, please consider sponsoring me [on GitHub] or [on Patreon]. 💖 [exercises]: https://github.com/CleanCut/ultimate_rust2#exercises [`example/`]: https://github.com/CleanCut/ultimate_rust2/blob/main/example [open an discussion]: https://github.com/CleanCut/ultimate_rust2/discussions/new [Ultimate Rust Crash Course]: https://agileperception.com/ultimate_rust_crash_course [Rust in 3 Weeks]: https://agileperception.com [Ultimate Rust 2: Intermediate Concepts]: https://github.com/CleanCut/ultimate_rust2 [the repository for the previous course]: https://github.com/CleanCut/ultimate_rust_crash_course [on GitHub]: https://github.com/sponsors/CleanCut [on Patreon]: https://patreon.com/nathanstocks [Error Handling Isn't All About Errors]: https://www.youtube.com/watch?v=rAF8mLI0naQ