|
ASCII search without lowercase copies
|
Easy
|
Primitives
|
|
|
Borrow it or own it: your first lifetime decision
|
Easy
|
Primitives
|
|
|
Build a CSV record with one output buffer
|
Easy
|
Primitives
|
|
|
Build a report with a reusable string buffer
|
Medium
|
End-to-End
|
|
|
Build FizzBuzz strings with an if expression
|
Easy
|
Primitives
|
|
|
collect and the turbofish: three targets, one source
|
Medium
|
Primitives
|
|
|
Cow: borrow until you have to own
|
Medium
|
Primitives
|
|
|
Cow in API design: impl Into<Cow<str>>
|
Hard
|
Framework
|
|
|
flat_map: expand a range spec like "1-3,7,10-12"
|
Medium
|
End-to-End
|
|
|
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
|
|
|
Move or borrow: the two ways to pass a value
|
Easy
|
Primitives
|
|
|
Move semantics: the relay
|
Easy
|
Primitives
|
|
? on Option, and bridging to Result
|
Medium
|
Primitives
|
|
|
peekable and next_if: write a tokeniser
|
Hard
|
End-to-End
|
|
|
Shadowing: rebinding is not mutation
|
Easy
|
Primitives
|
|
|
Slices are borrows
|
Easy
|
Primitives
|
|
|
Split a message at its first blank line
|
Easy
|
Primitives
|
|
|
String vs &str, part 2: functions that take and return text
|
Medium
|
Primitives
|
|
&str not &String, &[T] not &Vec<T>: deref coercion and ptr_arg
|
Easy
|
Primitives
|
|
|
The three rules of ownership
|
Easy
|
Primitives
|
|
|
Two inputs, one output lifetime
|
Medium
|
Primitives
|
|
|
Use lifetime elision for borrowed string results
|
Easy
|
Primitives
|
|
|
UTF-8 strings: bytes, scalar values and slicing
|
Hard
|
Primitives
|
|
|
Zero-copy parsing: borrow, don't allocate
|
Medium
|
Primitives
|
|