Learn Rust: Questions
Questions you should be able to answer at the end of this step:
- Rust is a Memory-Safe language. How? Why? In what way is this different from other Memory Safe languages such as Go?
- Rust is a performant language. Why can it claim this. How?
- How do you structure data in Rust?
- Is data passed by Reference or value in Rust? And what does it mean?
- Is data mutable or immutable by default? How do we make it the other way?
- What are traits and how are these related to the data models that you structure in Rust?
- How can you extend the behavior of external types?
- Can you extend behavior of external types using external traits? Why or why not?
- What is a constant? Where can we define these?
- What is a static variable? How is it different from a constant? What's special about mutable variables?
- How does Rust support Async Rust? How do you use it? What are Futures?
- How do you achieve parallel programming in Rust?
- What's the difference between async programming and parallel programming? How are they related?
- What is the borrow checker? What is ownership? How are these concepts related?
- Data can be moved and it can also be dropped. What do we mean with this? How do we have control over this?
- How do we achieve shared mutable references to the same data? How can this be done safe?
- What are lifetimes? How do they work? Can you give some examples of where these are used?
- What are generics? Why do we use them?
- What are Rust Macros? When do we use these? What type of Macros are there?
- How do you build Rust projects?
- How do we use dependencies of other developers into our projects? And how do we call such dependencies?
- What are sum types? What are product types?
- What is an Enum in Rust and how can we use it? How can we define it?
- What is pattern matching in Rust? How do we do it? How is it more powerful than a switch?
- How do we write tests in Rust? What kind of tests are there?
- What are closures and how are they related to functions? What do they have in common? How do they differ?
- What kind of smart pointers does the Rust std library provide you? What are their use cases, differences, and so on?
- 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?