|
|
Borrowing through Option
|
Medium
|
Primitives
|
|
|
|
Borrow it or own it: your first lifetime decision
|
Easy
|
Primitives
|
|
|
|
Capstone: an ownership-only job scheduler
|
Hard
|
End-to-End
|
|
|
|
Clone: explicit, deep, and never free
|
Easy
|
Primitives
|
|
|
|
Conditional moves and drop flags
|
Hard
|
Primitives
|
|
|
|
Copy: the types that don't move
|
Easy
|
Primitives
|
|
|
|
C strings, ownership across the boundary, and FFI-safe types
|
Medium
|
Framework
|
|
|
|
Designing signatures: T, &T, &mut T, impl Into<T>
|
Medium
|
Primitives
|
|
|
|
Drop order is specified
|
Medium
|
Primitives
|
|
|
|
drop(x) is just a function
|
Easy
|
Primitives
|
|
|
|
E0509: a Drop type is an atom
|
Hard
|
Primitives
|
|
|
|
Enum state machines with data-carrying transitions
|
Hard
|
End-to-End
|
|
|
|
Field init shorthand and struct update syntax
|
Easy
|
Primitives
|
|
|
|
Giving ownership back
|
Medium
|
Primitives
|
|
|
|
Grouping without itertools: anagram buckets
|
Medium
|
Primitives
|
|
|
|
Implementing `Vec` part 2: `insert`, `remove`, `Deref`, `IntoIter`
|
Hard
|
Framework
|
|
|
|
iter, iter_mut, into_iter: all three, one Vec
|
Easy
|
Primitives
|
|
|
|
Joining owned strings
|
Easy
|
Primitives
|
|
|
|
Leaking is safe
|
Hard
|
Primitives
|
|
|
|
Method receivers and the consuming builder
|
Medium
|
Primitives
|
|
|
|
Move or borrow: the two ways to pass a value
|
Easy
|
Primitives
|
|
|
|
Move semantics: the relay
|
Easy
|
Primitives
|
|
|
|
move: when the closure must own its captures
|
Medium
|
Primitives
|
|
|
|
Moving out of &mut: take, replace, swap
|
Medium
|
Primitives
|
|
|
|
mpsc channels: message passing basics
|
Easy
|
Primitives
|
|
|
|
Mutating an Option in place
|
Medium
|
Primitives
|
|
|
|
&mut: exclusive access, and why `mut` appears twice
|
Easy
|
Primitives
|
|
|
|
Ownership inside loops
|
Medium
|
Primitives
|
|
|
|
Ownership through function calls
|
Easy
|
Primitives
|
|
|
|
Partial moves: taking one field and leaving the rest
|
Medium
|
Primitives
|
|
|
|
peekable and next_if: write a tokeniser
|
Hard
|
End-to-End
|
|
|
|
`ptr::read`, `write`, `copy`, `copy_nonoverlapping`, `drop_in_place`
|
Medium
|
Primitives
|
|
|
|
Reading E0382 line by line
|
Easy
|
Primitives
|
|
|
|
Shadowing is not moving
|
Easy
|
Primitives
|
|
|
|
Stack, heap, and what a variable actually holds
|
Easy
|
Primitives
|
|
|
|
String vs &str, part 2: functions that take and return text
|
Medium
|
Primitives
|
|
|
|
Structs: naming your data
|
Easy
|
Primitives
|
|
|
|
The drop(tx) hang: a bug with no diagnostics
|
Medium
|
Framework
|
|
|
|
The owner is frozen too: E0503, E0505, E0506
|
Medium
|
Primitives
|
|
|
|
The stack, the heap, and `Box<T>`
|
Easy
|
Primitives
|
|
|
|
The three rules of ownership
|
Easy
|
Primitives
|
|