|
Accessing an owned value while it is borrowed
|
Medium
|
Primitives
|
|
|
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
|
|
|
Choose parameter types and shrink an enum
|
Medium
|
Primitives
|
|
|
Conditional moves and drop flags
|
Hard
|
Primitives
|
|
|
Copy values: translate points and find their centroid
|
Easy
|
Primitives
|
|
|
C strings and ownership across FFI
|
Medium
|
Framework
|
|
|
Enum state machines with data-carrying transitions
|
Hard
|
End-to-End
|
|
|
Extend a vector with insertion and consuming iteration
|
Hard
|
Framework
|
|
|
Field init shorthand and struct update syntax
|
Easy
|
Primitives
|
|
|
Giving ownership back
|
Medium
|
Primitives
|
|
|
Group anagrams with a map
|
Medium
|
Primitives
|
|
|
iter, iter_mut, into_iter: all three, one Vec
|
Easy
|
Primitives
|
|
|
Joining owned strings
|
Easy
|
Primitives
|
|
|
Let a channel receiver finish by dropping its senders
|
Medium
|
Framework
|
|
|
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 values through a pipeline without cloning
|
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
|
|
|
Observe scope cleanup and control vector drop order
|
Medium
|
Primitives
|
|
|
Observe when destructors are skipped
|
Hard
|
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
|
|
|
Schedule destruction with a by-value helper
|
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
|
|
|
Take a payload while keeping its destructor valid
|
Hard
|
Primitives
|
|
The stack, the heap, and Box<T>
|
Easy
|
Primitives
|
|
|
The three rules of ownership
|
Easy
|
Primitives
|
|