Learn Rust: Questions

Questions you should be able to answer at the end of this step:

  1. Rust is a Memory-Safe language. How? Why? In what way is this different from other Memory Safe languages such as Go?
  2. Rust is a performant language. Why can it claim this. How?
  3. How do you structure data in Rust?
  4. Is data passed by Reference or value in Rust? And what does it mean?
  5. Is data mutable or immutable by default? How do we make it the other way?
  6. What are traits and how are these related to the data models that you structure in Rust?
  7. How can you extend the behavior of external types?
  8. Can you extend behavior of external types using external traits? Why or why not?
  9. What is a constant? Where can we define these?
  10. What is a static variable? How is it different from a constant? What's special about mutable variables?
  11. How does Rust support Async Rust? How do you use it? What are Futures?
  12. How do you achieve parallel programming in Rust?
  13. What's the difference between async programming and parallel programming? How are they related?
  14. What is the borrow checker? What is ownership? How are these concepts related?
  15. Data can be moved and it can also be dropped. What do we mean with this? How do we have control over this?
  16. How do we achieve shared mutable references to the same data? How can this be done safe?
  17. What are lifetimes? How do they work? Can you give some examples of where these are used?
  18. What are generics? Why do we use them?
  19. What are Rust Macros? When do we use these? What type of Macros are there?
  20. How do you build Rust projects?
  21. How do we use dependencies of other developers into our projects? And how do we call such dependencies?
  22. What are sum types? What are product types?
  23. What is an Enum in Rust and how can we use it? How can we define it?
  24. What is pattern matching in Rust? How do we do it? How is it more powerful than a switch?
  25. How do we write tests in Rust? What kind of tests are there?
  26. What are closures and how are they related to functions? What do they have in common? How do they differ?
  27. What kind of smart pointers does the Rust std library provide you? What are their use cases, differences, and so on?
  28. What is unsafe Rust? How do we use it? When do we use it? What guarantees do we still get, even when using unsafe Rust?