├── learning_resources ├── supplementary │ ├── README.md │ ├── rust_by_example.md │ └── rust_book_experiment.md ├── primary │ ├── README.md │ ├── rustlings.md │ ├── the_rust_programming_language.md │ └── learn_rust_with_rustlings_5_2_1.md └── README.md ├── curriculum ├── 23_conclusion.md ├── 14_more_about_cargo_and_crates.md ├── 17_object_oriented_programming_features_of_rust.md ├── 00_introduction.md ├── 02_programming_a_guessing_game.md ├── 12_an_io_project.md ├── 20_final_project.md ├── 06_enums_and_pattern_matching.md ├── 18_patterns_and_matching.md ├── 21_appendix.md ├── 11_writing_automated_tests.md ├── 05_using_structs_to_structure_related_data.md ├── 22_type_conversions.md ├── 15_smart_pointers.md ├── 19_advanced_features.md ├── 16_fearless_concurrency.md ├── 07_managing_growing_projects_with_packages_crates_and_modules.md ├── 09_error_handling.md ├── 13_functional_language_features.md ├── 01_getting_started.md ├── 04_understanding_ownership.md ├── 08_common_collections.md ├── 10_generic_types_traits_and_lifetimes.md ├── 03_common_programming_concepts.md └── README.md ├── CONTRIBUTING.md ├── schedules ├── README.md ├── hare_track.md └── tortoise_track.md ├── CODE_OF_CONDUCT.md └── README.md /learning_resources/supplementary/README.md: -------------------------------------------------------------------------------- 1 | # Supplementary Resources 2 | 3 | - [Rust Book Experiment](rust_book_experiment.md) 4 | - [Rust By Example](rust_by_example.md) 5 | -------------------------------------------------------------------------------- /curriculum/23_conclusion.md: -------------------------------------------------------------------------------- 1 | # Conclusion 2 | 3 | ## Video 4 | 5 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [The Fennish line!](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=11255s) 6 | -------------------------------------------------------------------------------- /learning_resources/primary/README.md: -------------------------------------------------------------------------------- 1 | # Primary Resources 2 | 3 | - [Rustlings](rustlings.md) 4 | - [The Rust Programming Language](the_rust_programming_language.md) 5 | - [Learn Rust with Rustlings 5.2.1](learn_rust_with_rustlings_5_2_1.md) 6 | -------------------------------------------------------------------------------- /curriculum/14_more_about_cargo_and_crates.md: -------------------------------------------------------------------------------- 1 | # 14. More about Cargo and Crates.io 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [14. More about Cargo and Crates.io](https://doc.rust-lang.org/book/ch14-00-more-about-cargo.html) 6 | -------------------------------------------------------------------------------- /curriculum/17_object_oriented_programming_features_of_rust.md: -------------------------------------------------------------------------------- 1 | # 17. Object Oriented Programming Features of Rust 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [17. Object Oriented Programming Features of Rust](https://doc.rust-lang.org/book/ch17-00-oop.html) 6 | -------------------------------------------------------------------------------- /learning_resources/supplementary/rust_by_example.md: -------------------------------------------------------------------------------- 1 | # Rust By Example 2 | 3 | [Website](https://doc.rust-lang.org/rust-by-example/) | [GitHub](https://github.com/rust-lang/rust-by-example) 4 | 5 | Learn Rust by solving little exercises! It's almost like rustlings, but online. 6 | -------------------------------------------------------------------------------- /curriculum/00_introduction.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [Introduction](https://doc.rust-lang.org/book/ch00-00-introduction.html) 6 | 7 | ## Video 8 | 9 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [Intro](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=0s) 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | Thank you for your interest in making a contribution to the VC Rust Learning Cohort Curriculum repo! By submitting a pull request to this repository, you agree to follow the [Virtual Coffee Code of Conduct](CODE_OF_CONDUCT.md). 4 | 5 | Please open an issue before making a pull request. 6 | -------------------------------------------------------------------------------- /curriculum/02_programming_a_guessing_game.md: -------------------------------------------------------------------------------- 1 | # 2. Programming a Guessing Game 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [2. Programming a Guessing Game](https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html) 6 | 7 | ## Code 8 | 9 | This is a tutorial style chapter in the book. Code along with the instructions as well as your VC learning buddies! 10 | -------------------------------------------------------------------------------- /curriculum/12_an_io_project.md: -------------------------------------------------------------------------------- 1 | # 12. An I/O Project: Building A Command Line Program 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [12. An I/O Project: Building A Command Line Program](https://doc.rust-lang.org/book/ch12-00-an-io-project.html) 6 | 7 | ## Code 8 | 9 | You can create a command-line program using the book as a guide, or try building a CLI of your own! 10 | -------------------------------------------------------------------------------- /curriculum/20_final_project.md: -------------------------------------------------------------------------------- 1 | # 20. Final Project: Building a Multithreaded Web Server 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [20. Final Project: Building a Multithreaded Web Server](https://doc.rust-lang.org/book/ch20-00-final-project-a-web-server.html) 6 | 7 | ## Code 8 | 9 | You can build the project suggested in the book, or create something completely yours! 10 | -------------------------------------------------------------------------------- /schedules/README.md: -------------------------------------------------------------------------------- 1 | # Schedules 2 | 3 | This is a suggested schedule. Feel free to make a copy of your chosen track and adjust to your own needs. For you, one chapter may take 1-2 hours or 1-2 weeks. Take your time! 4 | 5 | ## Current Week: Week 11 6 | 7 | **Dates:** May 10 - 16 8 | 9 | ## Tortoise Track 🐢 10 | 11 | [View full schedule here](./tortoise_track.md) 12 | 13 | ## Hare Track 🐇 14 | 15 | [View full schedule here](./hare_track.md) 16 | -------------------------------------------------------------------------------- /learning_resources/primary/rustlings.md: -------------------------------------------------------------------------------- 1 | # Rustlings 2 | 3 | [Website](https://rustlings.cool/) | [GitHub](https://github.com/rust-lang/rustlings/tree/main) 4 | 5 | **Attributions:** [This file](https://github.com/rust-lang/rustlings/blob/main/AUTHORS.md) lists the people that have contributed to the `rustlings` project 6 | 7 | `rustlings` is a project containing small exercises to get you used to reading and writing Rust code. This includes reading and responding to compiler messages! 8 | -------------------------------------------------------------------------------- /learning_resources/primary/the_rust_programming_language.md: -------------------------------------------------------------------------------- 1 | # The Rust Programming Language 2 | 3 | [Website](https://doc.rust-lang.org/book/) | [GitHub](https://github.com/rust-lang/book) 4 | 5 | **Attributions:** Steve Klabnik and Carol Nichols, with contributions from the Rust Community 6 | 7 | The most comprehensive resource for learning Rust, but a bit theoretical sometimes. You will be using this along with Rustlings! 8 | 9 | Optionally, you can use the [Rust Book Experiment](../supplementary/rust_book_experiment.md) instead! 10 | -------------------------------------------------------------------------------- /curriculum/06_enums_and_pattern_matching.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 6. Enums and Pattern Matching 4 | 5 | ## Reading 6 | 7 | - [ ] The Rust Programming Language – [6. Enums and Pattern Matching](https://doc.rust-lang.org/book/ch06-00-enums.html) 8 | 9 | ## Code 10 | 11 | - [ ] Rustlings – [Enums](https://github.com/rust-lang/rustlings/tree/main/exercises/08_enums) (6) 12 | - `enums1.rs` only – the others will be covered in 18.3 13 | 14 | ## Video 15 | 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4323s) 17 | -------------------------------------------------------------------------------- /curriculum/18_patterns_and_matching.md: -------------------------------------------------------------------------------- 1 | # 18. Patterns and Matching 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [18. Patterns and Matching](https://doc.rust-lang.org/book/ch18-00-patterns.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Enums](https://github.com/rust-lang/rustlings/tree/main/exercises/08_enums) (18.3) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4367s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4438s) 15 | -------------------------------------------------------------------------------- /learning_resources/primary/learn_rust_with_rustlings_5_2_1.md: -------------------------------------------------------------------------------- 1 | # Learn Rust with Rustlings 5.2.1 2 | 3 | [Video](https://www.youtube.com/watch?v=G3Vr-yswlaU) 4 | 5 | **Attributions:** [Chris Biscardi](https://www.christopherbiscardi.com/) 6 | 7 | The creator of the video suggests two methods of approach to using this resource: 8 | 9 | 1. Read and attempt the question on your own first. Use the video segments to fill in gaps in your understanding. Then, return to the question to finish the exercise. 10 | 2. Watch the video in its entirety. Read and attempt the exercises, revisiting the appropriate video segments whenever you feel stuck. 11 | -------------------------------------------------------------------------------- /learning_resources/supplementary/rust_book_experiment.md: -------------------------------------------------------------------------------- 1 | # Rust Book Experiment 2 | 3 | [Website](https://rust-book.cs.brown.edu) | [GitHub](https://github.com/cognitive-engineering-lab/rust-book) 4 | 5 | A.k.a. The Rust Programming Language: Experimental Edition 6 | 7 | Just like _The Rust Programming Language_ book except it includes quizzes and in-browser highlighting capabilities. 8 | 9 | **Acknowledgements:** Niko Matsakis and Amazon Web Services provided funding for this experiment. Carol Nichols and the Rust Foundation helped publicize the experiment. TRPL is the product of many peoples' hard work before we started this experiment. 10 | -------------------------------------------------------------------------------- /curriculum/21_appendix.md: -------------------------------------------------------------------------------- 1 | # 21. Appendix 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [21. Appendix](https://doc.rust-lang.org/book/appendix-00.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Clippy](https://github.com/rust-lang/rustlings/tree/main/exercises/22_clippy) (21.4) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10340s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10377s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10416s) 16 | -------------------------------------------------------------------------------- /curriculum/11_writing_automated_tests.md: -------------------------------------------------------------------------------- 1 | # 11. Writing Automated Tests 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [11. Writing Automated Tests](https://doc.rust-lang.org/book/ch11-00-testing.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Tests](https://github.com/rust-lang/rustlings/tree/main/exercises/17_tests) (11.1) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7826s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7897s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7926s) 16 | -------------------------------------------------------------------------------- /learning_resources/README.md: -------------------------------------------------------------------------------- 1 | # Learning Resources 2 | 3 | ## Primary Resources 4 | 5 | - [Rustlings](./primary/rustlings.md) 6 | - [The Rust Programming Language](./primary/the_rust_programming_language.md) 7 | - [Learn Rust with Rustlings 5.2.1](./primary/learn_rust_with_rustlings_5_2_1.md) 8 | 9 | ## Supplementary Resources 10 | 11 | - [Rust Book Experiment](./supplementary/rust_book_experiment.md) 12 | - [Rust By Example](./supplementary/rust_by_example.md) 13 | 14 | ## Additional Resources 15 | 16 | Check out our [Rust Resources Thread](https://github.com/orgs/Virtual-Coffee/discussions/1122#discussioncomment-8429375) on the Virtual Coffee discussion board for numerous additional resources. You can add your own by replying to the thread! 17 | -------------------------------------------------------------------------------- /curriculum/05_using_structs_to_structure_related_data.md: -------------------------------------------------------------------------------- 1 | # 5. Using Structs to Structure Related Data 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [5. Using Structs to Structure Related Data](https://doc.rust-lang.org/book/ch05-00-structs.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Structs](https://github.com/rust-lang/rustlings/tree/main/exercises/07_structs) (5.1, 5.3) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3806s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3996s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4086s) 16 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Virtual Coffee Code of Conduct 2 | 3 | This project has adopted the [Virtual Coffee Code of Conduct](https://virtualcoffee.io/code-of-conduct/). 4 | 5 | As an Open Source Community, Virtual Coffee recognizes the importance of supporting our members and creating clear paths of communication. We know that sometimes things get lost in translation and we want to assume positive intent. 6 | 7 | With that said, if you believe someone has violated the Code of Conduct, please fill out our [COC Violation Form](https://virtualcoffee.io/report-coc-violation/), which you can do anonymously. 8 | 9 | For more information, see the full [Virtual Coffee Code of Conduct](https://virtualcoffee.io/code-of-conduct/), or contact with any additional questions or comments. 10 | -------------------------------------------------------------------------------- /curriculum/22_type_conversions.md: -------------------------------------------------------------------------------- 1 | # Type Conversions 2 | 3 | ## Code 4 | 5 | - [ ] Rustlings – [Type Conversions](https://github.com/rust-lang/rustlings/tree/main/exercises/23_conversions) 6 | 7 | ## Video 8 | 9 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [using_as.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10525s) 10 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [from_into.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10594s) 11 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [from_str.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10805s) 12 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [try_from_into.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10987s) 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [as_ref_mut.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=11125s) 14 | -------------------------------------------------------------------------------- /curriculum/15_smart_pointers.md: -------------------------------------------------------------------------------- 1 | # 15. Smart Pointers 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [15. Smart Pointers](https://doc.rust-lang.org/book/ch15-00-smart-pointers.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Smart Pointers](https://github.com/rust-lang/rustlings/tree/main/exercises/19_smart_pointers) (15, 16.3) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [box1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9206s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [arc1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9298s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [rc1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9480s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [cow1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9685s) 17 | -------------------------------------------------------------------------------- /curriculum/19_advanced_features.md: -------------------------------------------------------------------------------- 1 | # 19. Advanced Features 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [19. Advanced Features](https://doc.rust-lang.org/book/ch19-00-advanced-features.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Macros](https://github.com/rust-lang/rustlings/tree/main/exercises/21_macros) (19.6) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10194s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10231s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10258s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10286s) 17 | -------------------------------------------------------------------------------- /curriculum/16_fearless_concurrency.md: -------------------------------------------------------------------------------- 1 | # 16. Fearless Concurrency 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [16. Fearless Concurrency](https://doc.rust-lang.org/book/ch16-00-concurrency.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Smart Pointers](https://github.com/rust-lang/rustlings/tree/main/exercises/19_smart_pointers) (15, 16.3) 10 | - [ ] Rustlings – [Threads](https://github.com/rust-lang/rustlings/tree/main/exercises/20_threads) (16.1, 16.2, 16.3) 11 | 12 | ## Video 13 | 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9876s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9953s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10084s) 17 | -------------------------------------------------------------------------------- /curriculum/07_managing_growing_projects_with_packages_crates_and_modules.md: -------------------------------------------------------------------------------- 1 | # 7. Managing Growing Projects with Packages, Crates, and Modules 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [7. Managing Growing Projects with Packages, Crates, and Modules](https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Modules](https://github.com/rust-lang/rustlings/tree/main/exercises/10_modules) (7) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5174s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5254s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5335s) 16 | -------------------------------------------------------------------------------- /curriculum/09_error_handling.md: -------------------------------------------------------------------------------- 1 | # 9. Error Handling 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [9. Error Handling](https://doc.rust-lang.org/book/ch09-00-error-handling.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Error Handling](https://github.com/rust-lang/rustlings/tree/main/exercises/13_error_handling) (9) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6332s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6430s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6610s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6715s) 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6835s) 18 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6960s) 19 | -------------------------------------------------------------------------------- /curriculum/13_functional_language_features.md: -------------------------------------------------------------------------------- 1 | # 13. Functional Language Features: Iterators and Closures 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [13. Functional Language Features: Iterators and Closures](https://doc.rust-lang.org/book/ch13-00-functional-features.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Iterators](https://github.com/rust-lang/rustlings/tree/main/exercises/18_iterators) (13.2, 13.3, 13.4) 10 | 11 | ## Video 12 | 13 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8384s) 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8489s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8698s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8972s) 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9067s) 18 | -------------------------------------------------------------------------------- /curriculum/01_getting_started.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 1. Getting Started 4 | 5 | ## Reading 6 | 7 | - [ ] The Rust Programming Language – [1. Getting Started](https://doc.rust-lang.org/book/ch01-00-getting-started.html) 8 | 9 | ## Code 10 | 11 | - [ ] Setup your editor 12 | - Or, consider using [GitHub codespaces](https://github.com/codespaces-examples/rust), [Gitpod](https://www.gitpod.io/docs/introduction/languages/rust), etc. 13 | - [ ] Install [Rustlings](https://rustlings.cool/artifacts/) (make sure you can run `rustlings` or can use the web version) 14 | - Alternatively, you can use [a web-based version of Rustlings](https://github.com/rust-lang/rustlings/tree/rustlings-1) where the code is in GitHub and you click links to launch the Rust Web playground 15 | - [ ] Rustlings – [Intro](https://github.com/rust-lang/rustlings/tree/main/exercises/00_intro) 16 | 17 | ## Video 18 | 19 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [Installing Rustlings](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=103s) 20 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [intro1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=271s) 21 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [intro2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=359s) 22 | -------------------------------------------------------------------------------- /curriculum/04_understanding_ownership.md: -------------------------------------------------------------------------------- 1 | # 4. Understanding Ownership 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [4. Understanding Ownership](https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Move Semantics](https://github.com/rust-lang/rustlings/tree/main/exercises/06_move_semantics) (4.1, 4.2) 10 | - [ ] Rustlings – [Primitive Types](https://github.com/rust-lang/rustlings/tree/main/exercises/04_primitive_types) (4.3) 11 | 12 | ## Video 13 | 14 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2862s) 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2916s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3075s) 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3169s) 18 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3207s) 19 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3442s) 20 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2403s) 21 | -------------------------------------------------------------------------------- /curriculum/08_common_collections.md: -------------------------------------------------------------------------------- 1 | # 8. Common Collections 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [8. Common Collections](https://doc.rust-lang.org/book/ch08-00-common-collections.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Vectors](https://github.com/rust-lang/rustlings/tree/main/exercises/05_vecs) (8.1) 10 | - [ ] Rustlings – [Strings](https://github.com/rust-lang/rustlings/tree/main/exercises/09_strings) (8.2) 11 | - [ ] Rustlings – [Hashmaps](https://github.com/rust-lang/rustlings/tree/main/exercises/11_hashmaps) (8.3) 12 | 13 | ## Video 14 | 15 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [vec1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2602s) 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [vec2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2637s) 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4568s) 18 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4680s) 19 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4742s) 20 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4973s) 21 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5430s) 22 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5516s) 23 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5610s) 24 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5753s) 25 | -------------------------------------------------------------------------------- /curriculum/10_generic_types_traits_and_lifetimes.md: -------------------------------------------------------------------------------- 1 | # 10. Generic Types, Traits, and Lifetimes 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [10. Generic Types, Traits, and Lifetimes](https://doc.rust-lang.org/book/ch10-00-generics.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Generics](https://github.com/rust-lang/rustlings/tree/main/exercises/14_generics) (10) 10 | - [ ] Rustlings – [Options](https://github.com/rust-lang/rustlings/tree/main/exercises/12_options) (10.1) 11 | - [ ] Rustlings – [Traits](https://github.com/rust-lang/rustlings/tree/main/exercises/15_traits) (10.2) 12 | - [ ] Rustlings – [Lifetimes](https://github.com/rust-lang/rustlings/tree/main/exercises/16_lifetimes) (10.3) 13 | 14 | ## Video 15 | 16 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [generics1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7185s) 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [generics2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7279s) 18 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5988s) 19 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6161s) 20 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6235s) 21 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7377s) 22 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7476s) 23 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7522s) 24 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7558s) 25 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7616s) 26 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7691s) 27 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7957s) 28 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8102s) 29 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8305s) 30 | -------------------------------------------------------------------------------- /schedules/hare_track.md: -------------------------------------------------------------------------------- 1 | # Hare Track 🐇 2 | 3 | ## Week 1 4 | 5 | **Dates:** February 8-14 6 | 7 | - [Introduction](../curriculum/00_introduction.md) 8 | - [21. Appendix](../curriculum/21_appendix.md) 9 | - Reading only 10 | - [1. Getting Started](../curriculum/01_getting_started.md) 11 | - [2. Programming a Guessing Game](../curriculum/02_programming_a_guessing_game.md) 12 | 13 | ## Week 2 14 | 15 | **Dates:** February 15-21 16 | 17 | - [3. Common Programming Concepts](../curriculum/03_common_programming_concepts.md) 18 | - [4. Understanding Ownership](../curriculum/04_understanding_ownership.md) 19 | 20 | ## Week 3 21 | 22 | **Dates:** February 22-28 23 | 24 | - [5. Using Structs to Structure Related Data](../curriculum/05_using_structs_to_structure_related_data.md) 25 | - [6. Enums and Patterns Matching](../curriculum/06_enums_and_pattern_matching.md) 26 | 27 | ## Week 4 28 | 29 | **Dates:** February 29 – March 6 30 | 31 | - [7. Managing Growing Projects with Packages, Crates, and Modules](../curriculum/07_managing_growing_projects_with_packages_crates_and_modules.md) 32 | - [8. Common Collections](../curriculum/08_common_collections.md) 33 | 34 | ## Week 5 35 | 36 | **Dates:** March 7-13 37 | 38 | - [9. Error Handling](../curriculum/09_error_handling.md) 39 | - [10. Generic Types, Traits, and Lifetimes](../curriculum/10_generic_types_traits_and_lifetimes.md) 40 | - [11. Writing Automated Tests](../curriculum/11_writing_automated_tests.md) 41 | 42 | ## Catch Up Break 43 | 44 | **Dates:** March 14 – April 4 45 | 46 | ## Week 6 47 | 48 | **Dates:** April 5-11 49 | 50 | - [12. An I/O Project: Building A Command Line Program](../curriculum/12_an_io_project.md) 51 | 52 | ## Week 7 53 | 54 | **Dates:** April 12-18 55 | 56 | - [13. Functional Language Features: Iterators and Closures](../curriculum/13_functional_language_features.md) 57 | - [14. More about Cargo and Crates.io](../curriculum/14_more_about_cargo_and_crates.md) 58 | 59 | ## Week 8 60 | 61 | **Dates:** April 19-25 62 | 63 | - [15. Smart Pointers](../curriculum/15_smart_pointers.md) 64 | - [16. Fearless Concurrency](../curriculum/16_fearless_concurrency.md) 65 | 66 | ## Week 9 67 | 68 | **Dates:** April 26 – May 2 69 | 70 | - [17. Object Oriented Programming Features of Rust](../curriculum/17_object_oriented_programming_features_of_rust.md) 71 | - [18. Patterns and Matching](../curriculum/18_patterns_and_matching.md) 72 | - [19. Advanced Features](../curriculum/19_advanced_features.md) 73 | 74 | ## Week 10 75 | 76 | **Dates:** May 3-9 77 | 78 | - [20. Final Project: Building a Multithreaded Web Server](../curriculum/20_final_project.md) 79 | 80 | ## Week 11 81 | 82 | **Dates:** May 10-16 83 | 84 | - [21. Appendix](../curriculum/21_appendix.md) 85 | - Code exercises and video 86 | - [Type Conversions Exercises](../curriculum/22_type_conversions.md) 87 | - [Conclusion](../curriculum/23_conclusion.md) 88 | -------------------------------------------------------------------------------- /curriculum/03_common_programming_concepts.md: -------------------------------------------------------------------------------- 1 | # 3. Common Programming Concepts 2 | 3 | ## Reading 4 | 5 | - [ ] The Rust Programming Language – [3. Common Programming Concepts](https://doc.rust-lang.org/book/ch03-00-common-programming-concepts.html) 6 | 7 | ## Code 8 | 9 | - [ ] Rustlings – [Variables](https://github.com/rust-lang/rustlings/tree/main/exercises/01_variables) (3.1) 10 | - [ ] Rustlings – [Primitive Types](https://github.com/rust-lang/rustlings/tree/main/exercises/04_primitive_types) (3.2) 11 | - All except `primitive_types4.rs`, which will be covered in 4.3 12 | - [ ] Rustlings – [Functions](https://github.com/rust-lang/rustlings/tree/main/exercises/02_functions) (3.3) 13 | - [ ] Rustlings – [If](https://github.com/rust-lang/rustlings/tree/main/exercises/03_if) (3.5) 14 | 15 | ## Video 16 | 17 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=475s) 18 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=555s) 19 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=729s) 20 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=791s) 21 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=867s) 22 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=984s) 23 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2209s) 24 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2246s) 25 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2315s) 26 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2516s) 27 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2563s) 28 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1051s) 29 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1091s) 30 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1299s) 31 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1351s) 32 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1518s) 33 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [if1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1647s) 34 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [if2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1790s) 35 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2044s) 36 | -------------------------------------------------------------------------------- /schedules/tortoise_track.md: -------------------------------------------------------------------------------- 1 | # Tortoise Track 🐢 2 | 3 | ## Week 1 4 | 5 | **Dates:** February 8-14 6 | 7 | - [Introduction](../curriculum/00_introduction.md) 8 | - [21. Appendix](../curriculum/21_appendix.md) 9 | - Reading only 10 | - [1. Getting Started](../curriculum/01_getting_started.md) 11 | 12 | ## Week 2 13 | 14 | **Dates:** February 15-21 15 | 16 | - [2. Programming a Guessing Game](../curriculum/02_programming_a_guessing_game.md) 17 | 18 | ## Week 3 19 | 20 | **Dates:** February 22-28 21 | 22 | - [3. Common Programming Concepts](../curriculum/03_common_programming_concepts.md) 23 | 24 | ## Week 4 25 | 26 | **Dates:** February 29 – March 6 27 | 28 | - [4. Understanding Ownership](../curriculum/04_understanding_ownership.md) 29 | - [5. Using Structs to Structure Related Data](../curriculum/05_using_structs_to_structure_related_data.md) 30 | 31 | ## Week 5 32 | 33 | **Dates:** March 7-13 34 | 35 | - [6. Enums and Patterns Matching](../curriculum/06_enums_and_pattern_matching.md) 36 | - [7. Managing Growing Projects with Packages, Crates, and Modules](../curriculum/07_managing_growing_projects_with_packages_crates_and_modules.md) 37 | 38 | ## Catch Up Break 39 | 40 | **Dates:** March 14 – April 4 41 | 42 | ## Week 6 43 | 44 | **Dates:** April 5-11 45 | 46 | - [8. Common Collections](../curriculum/08_common_collections.md) 47 | - [9. Error Handling](../curriculum/09_error_handling.md) 48 | 49 | ## Week 7 50 | 51 | **Dates:** April 12-18 52 | 53 | - [10. Generic Types, Traits, and Lifetimes](../curriculum/10_generic_types_traits_and_lifetimes.md) 54 | 55 | ## Week 8 56 | 57 | **Dates:** April 19-25 58 | 59 | - [11. Writing Automated Tests](../curriculum/11_writing_automated_tests.md) 60 | - [12. An I/O Project: Building A Command Line Program](../curriculum/12_an_io_project.md) 61 | 62 | ## Week 9 63 | 64 | **Dates:** April 26 – May 2 65 | 66 | - [13. Functional Language Features: Iterators and Closures](../curriculum/13_functional_language_features.md) 67 | - [14. More about Cargo and Crates.io](../curriculum/14_more_about_cargo_and_crates.md) 68 | 69 | ## Week 10 70 | 71 | **Dates:** May 3-9 72 | 73 | - [15. Smart Pointers](../curriculum/15_smart_pointers.md) 74 | - [16. Fearless Concurrency](../curriculum/16_fearless_concurrency.md) 75 | 76 | ## Week 11 77 | 78 | **Dates:** May 10-16 79 | 80 | - [17. Object Oriented Programming Features of Rust](../curriculum/17_object_oriented_programming_features_of_rust.md) 81 | - [18. Patterns and Matching](../curriculum/18_patterns_and_matching.md) 82 | 83 | ## Week 12 84 | 85 | **Dates:** May 17-23 86 | 87 | - [19. Advanced Features](../curriculum/19_advanced_features.md) 88 | 89 | ## Week 13 90 | 91 | **Dates:** May 24-30 92 | 93 | - [20. Final Project: Building a Multithreaded Web Server](../curriculum/20_final_project.md) 94 | 95 | ## Week 14 96 | 97 | **Dates:** May 31 – June 6 98 | 99 | - [21. Appendix](../curriculum/21_appendix.md) 100 | - Code exercises and video 101 | - [Type Conversions Exercises](../curriculum/22_type_conversions.md) 102 | - [Conclusion](../curriculum/23_conclusion.md) 103 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VC Rust Learning Cohort 2 | 3 | Hello everyone! The following is an overview of Virtual Coffee's asynchronous Rust Learning Cohort. It helps to already be familiar with programming and software development before you start (i.e. Rust may not be the best first programming language to learn). 4 | 5 | Questions? [Comment on the designated question thread](https://github.com/orgs/Virtual-Coffee/discussions/1122#discussioncomment-8348207) in our VC Discussion Board. We will be posting weekly check-ins on the [#learning-together Slack channel](https://virtual-coffee-group.slack.com/archives/C029MJ4E327) and schedule at least two group review sessions throughout the cohort. 6 | 7 | ## Table of Contents 8 | 9 | - [Usage](#usage) 10 | - [Curriculum](#curriculum) 11 | - [Introduction](./curriculum/00_introduction.md) 12 | - [1. Getting Started](./curriculum/01_getting_started.md) 13 | - [2. Programming a Guessing Game](./curriculum/02_programming_a_guessing_game.md) 14 | - [3. Common Programming Concepts](./curriculum/03_common_programming_concepts.md) 15 | - [4. Understanding Ownership](./curriculum/04_understanding_ownership.md) 16 | - [5. Using Structs to Structure Related Data](./curriculum/05_using_structs_to_structure_related_data.md) 17 | - [6. Enums and Pattern Matching](./curriculum/06_enums_and_pattern_matching.md) 18 | - [7. Managing Growing Projects with Packages, Crates, and Modules](./curriculum/07_managing_growing_projects_with_packages_crates_and_modules.md) 19 | - [8. Common Collections](./curriculum/08_common_collections.md) 20 | - [9. Error Handling](./curriculum/09_error_handling.md) 21 | - [10. Generic Types, Traits, and Lifetimes](./curriculum/10_generic_types_traits_and_lifetimes.md) 22 | - [11. Writing Automated Tests](./curriculum/11_writing_automated_tests.md) 23 | - [12. An I/O Project: Building A Command Line Program](./curriculum/12_an_io_project.md) 24 | - [13. Functional Language Features: Iterators and Closures](./curriculum/13_functional_language_features.md) 25 | - [14. More about Cargo and Crates.io](./curriculum/14_more_about_cargo_and_crates.md) 26 | - [15. Smart Pointers](./curriculum/15_smart_pointers.md) 27 | - [16. Fearless Concurrency](./curriculum/16_fearless_concurrency.md) 28 | - [17. Object Oriented Programming Features of Rust](./curriculum/17_object_oriented_programming_features_of_rust.md) 29 | - [18. Patterns and Matching](./curriculum/18_patterns_and_matching.md) 30 | - [19. Advanced Features](./curriculum/19_advanced_features.md) 31 | - [20. Final Project: Building a Multithreaded Web Server](./curriculum/20_final_project.md) 32 | - [21. Appendix](./curriculum/21_appendix.md) 33 | - [Type Conversions](./curriculum/22_type_conversions.md) 34 | - [Conclusion](./curriculum/23_conclusion.md) 35 | - [Learning Resources](./learning_resources/README.md) 36 | - [Suggested Schedule](#suggested-schedule) 37 | - [Tortoise Track 🐢](./schedules/tortoise_track.md) 38 | - [Hare Track 🐇](./schedules/hare_track.md) 39 | - [Contributing](./CONTRIBUTING.md) 40 | - [Code of Conduct](./CODE_OF_CONDUCT.md) 41 | 42 | ## Usage 43 | 44 | Fork this repository to make the VC Rust Learning Cohort your own! 45 | 46 | - Adjust the pace of the schedule to suit your needs 47 | - Track your own progress through the curriculum by checking off reading, code, and video tasks as you finish them 48 | - Keep a list of cohort learning materials at hand 49 | - Plus, more resources as the repo is updated 50 | 51 | ## Curriculum 52 | 53 | Check out the curriculum directory for a chapter-by-chapter breakdown. Use the direct links in the [Table of Contents](#table-of-contents) above for easier navigation. 54 | 55 | ## Learning Resources 56 | 57 | Look in the [Primary](./learning_resources/primary/README.md) directory for materials needed to complete this curriculum. The [Supplementary](./learning_resources/supplementary/README.md) directory contains learning materials that will help you complete the curriculum, but are optional. You can find additional resources in our [Rust Resources Thread](https://github.com/orgs/Virtual-Coffee/discussions/1122#discussioncomment-8429375) on the Virtual Coffee discussion board. 58 | 59 | ## Suggested Schedule 60 | 61 | We have created two suggested schedules to follow, depending on the amount of time you have to commit to learning Rust every week. These schedules will likely be adjusted as we progress through the curriculum and discover how long certain tasks take to complete in real time. Our scheduled tracks are as follows: 62 | 63 | - [Tortoise Track](./schedules/tortoise_track.md) 🐢 ➞ Plan to commit 1-2 hours per week 64 | - [Hare Track](./schedules/hare_track.md) 🐇 ➞ Plan to commit 2-4 hours per week 65 | -------------------------------------------------------------------------------- /curriculum/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Curriculum 4 | 5 | You can use this page with the entire curriculum to track your progress, or mark each section page. 6 | 7 | ## High Level Overview 8 | 9 | - Install and setup Rust, then run through the basics 10 | - The basics - learn about variables, loops, etc. 11 | - Dive deeper - learn about Rust’s memory model 12 | - Round it out - learn how to write tests, handle errors, etc. 13 | - Advance your knowledge - parallelization + threads, generics 🧠 📈 14 | 15 | ## Introduction 16 | 17 | ### Reading 18 | 19 | - [ ] The Rust Programming Language – [Introduction](https://doc.rust-lang.org/book/ch00-00-introduction.html) 20 | 21 | ### Video 22 | 23 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [Intro](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=0s) 24 | 25 | ## 1. Getting Started 26 | 27 | ### Reading 28 | 29 | - [ ] The Rust Programming Language – [1. Getting Started](https://doc.rust-lang.org/book/ch01-00-getting-started.html) 30 | 31 | ### Code 32 | 33 | - [ ] Setup your editor 34 | - Or, consider using [GitHub codespaces](https://github.com/codespaces-examples/rust), [Gitpod](https://www.gitpod.io/docs/introduction/languages/rust), etc. 35 | - [ ] Install [Rustlings](https://rustlings.cool/artifacts/) (make sure you can run `rustlings` or can use the web version) 36 | - Alternatively, you can use [a web-based version of Rustlings](https://github.com/rust-lang/rustlings/tree/rustlings-1) where the code is in GitHub and you click links to launch the Rust Web playground 37 | - [ ] Rustlings – [Intro](https://github.com/rust-lang/rustlings/tree/main/exercises/00_intro) 38 | 39 | ### Video 40 | 41 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [Installing Rustlings](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=103s) 42 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [intro1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=271s) 43 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [intro2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=359s) 44 | 45 | ## 2. Programming a Guessing Game 46 | 47 | ### Reading 48 | 49 | - [ ] The Rust Programming Language – [2. Programming a Guessing Game](https://doc.rust-lang.org/book/ch02-00-guessing-game-tutorial.html) 50 | 51 | ### Code 52 | 53 | This is a tutorial style chapter in the book. Code along with the instructions as well as your VC learning buddies! 54 | 55 | ## 3. Common Programming Concepts 56 | 57 | ### Reading 58 | 59 | - [ ] The Rust Programming Language – [3. Common Programming Concepts](https://doc.rust-lang.org/book/ch03-00-common-programming-concepts.html) 60 | 61 | ### Code 62 | 63 | - [ ] Rustlings – [Variables](https://github.com/rust-lang/rustlings/tree/main/exercises/01_variables) (3.1) 64 | - [ ] Rustlings – [Primitive Types](https://github.com/rust-lang/rustlings/tree/main/exercises/04_primitive_types) (3.2) 65 | - All except `primitive_types4.rs`, which will be covered in 4.3 66 | - [ ] Rustlings – [Functions](https://github.com/rust-lang/rustlings/tree/main/exercises/02_functions) (3.3) 67 | - [ ] Rustlings – [If](https://github.com/rust-lang/rustlings/tree/main/exercises/03_if) (3.5) 68 | 69 | ### Video 70 | 71 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=475s) 72 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=555s) 73 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=729s) 74 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=791s) 75 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=867s) 76 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [variables6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=984s) 77 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2209s) 78 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2246s) 79 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2315s) 80 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2516s) 81 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2563s) 82 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1051s) 83 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1091s) 84 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1299s) 85 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1351s) 86 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [functions5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1518s) 87 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [if1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1647s) 88 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [if2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=1790s) 89 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2044s) 90 | 91 | ## 4. Understanding Ownership 92 | 93 | ### Reading 94 | 95 | - [ ] The Rust Programming Language – [4. Understanding Ownership](https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html) 96 | 97 | ### Code 98 | 99 | - [ ] Rustlings – [Move Semantics](https://github.com/rust-lang/rustlings/tree/main/exercises/06_move_semantics) (4.1, 4.2) 100 | - [ ] Rustlings – [Primitive Types](https://github.com/rust-lang/rustlings/tree/main/exercises/04_primitive_types) (4.3) 101 | 102 | ### Video 103 | 104 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2862s) 105 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2916s) 106 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3075s) 107 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3169s) 108 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3207s) 109 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [move_semantics6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3442s) 110 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [primitive_types4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2403s) 111 | 112 | ## 5. Using Structs to Structure Related Data 113 | 114 | ### Reading 115 | 116 | - [ ] The Rust Programming Language – [5. Using Structs to Structure Related Data](https://doc.rust-lang.org/book/ch05-00-structs.html) 117 | 118 | ### Code 119 | 120 | - [ ] Rustlings – [Structs](https://github.com/rust-lang/rustlings/tree/main/exercises/07_structs) (5.1, 5.3) 121 | 122 | ### Video 123 | 124 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3806s) 125 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=3996s) 126 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [structs3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4086s) 127 | 128 | ## 6. Enums and Pattern Matching 129 | 130 | ### Reading 131 | 132 | - [ ] The Rust Programming Language – [6. Enums and Pattern Matching](https://doc.rust-lang.org/book/ch06-00-enums.html) 133 | 134 | ### Code 135 | 136 | - [ ] Rustlings – [Enums](https://github.com/rust-lang/rustlings/tree/main/exercises/08_enums) (6) 137 | - `enums1.rs` only – the others will be covered in 18.3 138 | 139 | ### Video 140 | 141 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4323s) 142 | 143 | ## 7. Managing Growing Projects with Packages, Crates, and Modules 144 | 145 | ### Reading 146 | 147 | - [ ] The Rust Programming Language – [7. Managing Growing Projects with Packages, Crates, and Modules](https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html) 148 | 149 | ### Code 150 | 151 | - [ ] Rustlings – [Modules](https://github.com/rust-lang/rustlings/tree/main/exercises/10_modules) (7) 152 | 153 | ### Video 154 | 155 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5174s) 156 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5254s) 157 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [modules3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5335s) 158 | 159 | ## 8. Common Collections 160 | 161 | ### Reading 162 | 163 | - [ ] The Rust Programming Language – [8. Common Collections](https://doc.rust-lang.org/book/ch08-00-common-collections.html) 164 | 165 | ### Code 166 | 167 | - [ ] Rustlings – [Vectors](https://github.com/rust-lang/rustlings/tree/main/exercises/05_vecs) (8.1) 168 | - [ ] Rustlings – [Strings](https://github.com/rust-lang/rustlings/tree/main/exercises/09_strings) (8.2) 169 | - [ ] Rustlings – [Hashmaps](https://github.com/rust-lang/rustlings/tree/main/exercises/11_hashmaps) (8.3) 170 | 171 | ### Video 172 | 173 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [vec1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2602s) 174 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [vec2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=2637s) 175 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4568s) 176 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4680s) 177 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4742s) 178 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [strings4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4973s) 179 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5430s) 180 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5516s) 181 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [hashmaps3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5610s) 182 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5753s) 183 | 184 | ## 9. Error Handling 185 | 186 | ### Reading 187 | 188 | - [ ] The Rust Programming Language – [9. Error Handling](https://doc.rust-lang.org/book/ch09-00-error-handling.html) 189 | 190 | ### Code 191 | 192 | - [ ] Rustlings – [Error Handling](https://github.com/rust-lang/rustlings/tree/main/exercises/13_error_handling) (9) 193 | 194 | ### Video 195 | 196 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6332s) 197 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6430s) 198 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6610s) 199 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6715s) 200 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6835s) 201 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [errors6.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6960s) 202 | 203 | ## 10. Generic Types, Traits, and Lifetimes 204 | 205 | ### Reading 206 | 207 | - [ ] The Rust Programming Language – [10. Generic Types, Traits, and Lifetimes](https://doc.rust-lang.org/book/ch10-00-generics.html) 208 | 209 | ### Code 210 | 211 | - [ ] Rustlings – [Generics](https://github.com/rust-lang/rustlings/tree/main/exercises/14_generics) (10) 212 | - [ ] Rustlings – [Options](https://github.com/rust-lang/rustlings/tree/main/exercises/12_options) (10.1) 213 | - [ ] Rustlings – [Traits](https://github.com/rust-lang/rustlings/tree/main/exercises/15_traits) (10.2) 214 | - [ ] Rustlings – [Lifetimes](https://github.com/rust-lang/rustlings/tree/main/exercises/16_lifetimes) (10.3) 215 | 216 | ### Video 217 | 218 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [generics1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7185s) 219 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [generics2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7279s) 220 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=5988s) 221 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6161s) 222 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [options3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=6235s) 223 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7377s) 224 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7476s) 225 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7522s) 226 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7558s) 227 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [traits5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7616s) 228 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [quiz3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7691s) 229 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7957s) 230 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8102s) 231 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [lifetimes3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8305s) 232 | 233 | ## 11. Writing Automated Tests 234 | 235 | ### Reading 236 | 237 | - [ ] The Rust Programming Language – [11. Writing Automated Tests](https://doc.rust-lang.org/book/ch11-00-testing.html) 238 | 239 | ### Code 240 | 241 | - [ ] Rustlings – [Tests](https://github.com/rust-lang/rustlings/tree/main/exercises/17_tests) (11.1) 242 | 243 | ### Video 244 | 245 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7826s) 246 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7897s) 247 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [tests3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=7926s) 248 | 249 | ## 12. An I/O Project: Building A Command Line Program 250 | 251 | ### Reading 252 | 253 | - [ ] The Rust Programming Language – [12. An I/O Project: Building A Command Line Program](https://doc.rust-lang.org/book/ch12-00-an-io-project.html) 254 | 255 | ### Code 256 | 257 | You can create a command-line program using the book as a guide, or try building a CLI of your own! 258 | 259 | ## 13. Functional Language Features: Iterators and Closures 260 | 261 | ### Reading 262 | 263 | - [ ] The Rust Programming Language – [13. Functional Language Features: Iterators and Closures](https://doc.rust-lang.org/book/ch13-00-functional-features.html) 264 | 265 | ### Code 266 | 267 | - [ ] Rustlings – [Iterators](https://github.com/rust-lang/rustlings/tree/main/exercises/18_iterators) (13.2, 13.3, 13.4) 268 | 269 | ### Video 270 | 271 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8384s) 272 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8489s) 273 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8698s) 274 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=8972s) 275 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [iterators5.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9067s) 276 | 277 | ## 14. More about Cargo and Crates.io 278 | 279 | ### Reading 280 | 281 | - [ ] The Rust Programming Language – [14. More about Cargo and Crates.io](https://doc.rust-lang.org/book/ch14-00-more-about-cargo.html) 282 | 283 | ## 15. Smart Pointers 284 | 285 | ### Reading 286 | 287 | - [ ] The Rust Programming Language – [15. Smart Pointers](https://doc.rust-lang.org/book/ch15-00-smart-pointers.html) 288 | 289 | ### Code 290 | 291 | - [ ] Rustlings – [Smart Pointers](https://github.com/rust-lang/rustlings/tree/main/exercises/19_smart_pointers) (15, 16.3) 292 | 293 | ### Video 294 | 295 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [box1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9206s) 296 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [arc1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9298s) 297 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [rc1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9480s) 298 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [cow1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9685s) 299 | 300 | ## 16. Fearless Concurrency 301 | 302 | ### Reading 303 | 304 | - [ ] The Rust Programming Language – [16. Fearless Concurrency](https://doc.rust-lang.org/book/ch16-00-concurrency.html) 305 | 306 | ### Code 307 | 308 | - [ ] Rustlings – [Smart Pointers](https://github.com/rust-lang/rustlings/tree/main/exercises/19_smart_pointers) (15, 16.3) 309 | - [ ] Rustlings – [Threads](https://github.com/rust-lang/rustlings/tree/main/exercises/20_threads) (16.1, 16.2, 16.3) 310 | 311 | ### Video 312 | 313 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9876s) 314 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=9953s) 315 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [threads3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10084s) 316 | 317 | ## 17. Object Oriented Programming Features of Rust 318 | 319 | ### Reading 320 | 321 | - [ ] The Rust Programming Language – [17. Object Oriented Programming Features of Rust](https://doc.rust-lang.org/book/ch17-00-oop.html) 322 | 323 | ## 18. Patterns and Matching 324 | 325 | ### Reading 326 | 327 | - [ ] The Rust Programming Language – [18. Patterns and Matching](https://doc.rust-lang.org/book/ch18-00-patterns.html) 328 | 329 | ### Code 330 | 331 | - [ ] Rustlings – [Enums](https://github.com/rust-lang/rustlings/tree/main/exercises/08_enums) (18.3) 332 | 333 | ### Video 334 | 335 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4367s) 336 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [enums3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=4438s) 337 | 338 | ## 19. Advanced Features 339 | 340 | ### Reading 341 | 342 | - [ ] The Rust Programming Language – [19. Advanced Features](https://doc.rust-lang.org/book/ch19-00-advanced-features.html) 343 | 344 | ### Code 345 | 346 | - [ ] Rustlings – [Macros](https://github.com/rust-lang/rustlings/tree/main/exercises/21_macros) (19.6) 347 | 348 | ### Video 349 | 350 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10194s) 351 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10231s) 352 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10258s) 353 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [macros4.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10286s) 354 | 355 | ## 20. Final Project: Building a Multithreaded Web Server 356 | 357 | ### Reading 358 | 359 | - [ ] The Rust Programming Language – [20. Final Project: Building a Multithreaded Web Server](https://doc.rust-lang.org/book/ch20-00-final-project-a-web-server.html) 360 | 361 | ### Code 362 | 363 | You can build the project suggested in the book, or create something completely yours! 364 | 365 | ## 21. Appendix 366 | 367 | ### Reading 368 | 369 | - [ ] The Rust Programming Language – [21. Appendix](https://doc.rust-lang.org/book/appendix-00.html) 370 | 371 | ### Code 372 | 373 | - [ ] Rustlings – [Clippy](https://github.com/rust-lang/rustlings/tree/main/exercises/22_clippy) (21.4) 374 | 375 | ### Video 376 | 377 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy1.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10340s) 378 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy2.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10377s) 379 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [clippy3.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10416s) 380 | 381 | ## Type Conversions 382 | 383 | ### Code 384 | 385 | - [ ] Rustlings – [Type Conversions](https://github.com/rust-lang/rustlings/tree/main/exercises/23_conversions) 386 | 387 | ### Video 388 | 389 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [using_as.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10525s) 390 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [from_into.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10594s) 391 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [from_str.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10805s) 392 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [try_from_into.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=10987s) 393 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [as_ref_mut.rs](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=11125s) 394 | 395 | ## Conclusion 396 | 397 | ### Video 398 | 399 | - [ ] Watch Learn Rust with Rustlings 5.2.1 – [The Fennish line!](https://www.youtube.com/watch?v=G3Vr-yswlaU&t=11255s) 400 | --------------------------------------------------------------------------------