Study using the "Rust for Rustaceans: Idiomatic Programming for Experienced Developers" book
Go through the entire book, getting a deep(er) understanding of the advanced concepts and inner workings of them.
At the end of the book you should be able to present your own GitHub or GitLab hosted projected based on the exercises and projects of the books, where you applied all your knowledge and also put in something of yourself in it.
Questions you should be able to answer at the end of this step:
- Be able to answer all questions from previous sections, in full confidence and in a lot more depth than you could do before.
- How is memory laid out for your Rust Data structures? Can you control it? If so, how?
- Explain in full detail so someone new to Rust can understand it what borrowing and lifetimes are, how do they work, why are they important, how do they affect us, how do we encounter it, why do we use it?
- What primitive types are there in Rust and how are they laid out in memory?
- What is the Orphan rule? Why is it important?
- What is polling in the context of Asynchronous programming?
- List some additional testing tools beyond unit tests? Why does each one of them matter?
- What is Pin and Unpin?
- Note: Crust of Rust also has a great video about it should you need some more explanations about this tricky concept;
- Why is Asynchronous programming more complicated than parallel programming?
- How can you test your Asynchronous code? And because it is Rust, what kind of Asynchronous problems do we not need to test if we structure our code right? And why not?
- In the context of concurrent programming, what are actors?
- Bonus question: why do some people see this as the future?
- What is FFI? Why do we use it?
- What is Rust without the STD? How do we use it and why?
- What are some common patterns found in the wild and that are discussed in the book?
- How can you continue to learn Rust?