mirror of
https://github.com/rust-lang/rustlings.git
synced 2026-01-11 13:19:18 +00:00
2.8 KiB
2.8 KiB
- primitive_types4.rs - slices and arrays
- Revisit macros (good explanation here: https://doc.rust-lang.org/rust-by-example/macros.html)
- vecs2.rs -> review v.iter_mut to mutate vector elements vs. let out = v.iter().map(|n| n*2).collect() to multiple each value but return results to new Vec vector
- move_semantics1 why does vec0 -> v inside the function allow v to be mutable? Analyze in detail. [Actually this is called a move of ownership!]
- move_semantics2 -> important!!!
- structs3 -> review impl (for struct implementations it adds StructName::method() methods to it (kind of like a value receiver in Go :) . Keep in mind there are also trait (interface) impls.
- enums2 and enums3 are VERY important to understand enum matching!!!
- strings3 check differences between str and String libraries. Yes str is a string slice but how to know when to use String methods?
- modules all -> important for understanding modules
- insert method for hashmaps (see hashmaps1)
- hashmap3 is good for understanding entry().or_insert() pattern for hashmaps
- generics2. review https://doc.rust-lang.org/book/ch10-01-syntax.html
- traits1 why is self accepted since it's being updated?
- revisit all traits exercises
- options1 (understand Some and None)
- option2 (important to understand if let, while let statements alternative to match ). ChatGPT explanation was great.
- errors2 make sure you understand error propagation but also the long-form solution (just for understanding). "The ? placed after a Result value is defined to work in almost the same way as the match expressions we defined to handle the Result values in Listing 9-6. If the value of the Result is an Ok, the value inside the Ok will get returned from this expression, and the program will continue. If the value is an Err, the Err will be returned from the whole function as if we had used the return keyword so the error value gets propagated to the calling code."
- errors3
- HAVE to revisit error5 - > great pre-intro to Box<dyn
Trait> - error6 map_err for transforming Err type in Result into a new error value of the same type.
- Revisit error6 => HARD
- trait3 -> very important for understanding default implementation and overrides. Also reread this page: https://doc.rust-lang.org/book/ch10-02-traits.html#default-implementations. Answer also here: https://users.rust-lang.org/t/rustlings-traits3-rs-question/80742/3
- trait5 -> important to understand trait bounds with generics. Also be sure to understand the short format vs. clearer format and pros/cons
- Retake quiz3 for more traits+generics practice
- lifetimes1
- standard library types iterators2 -> VERY IMPORTANT to understand map, chain/chain::<Vec>, join
- iterator4 to make sure you understand fold/rfold
clippy conversions macros standard_library_types threads