|
Accept string-like values with AsRef
|
Medium
|
Primitives
|
|
|
Accessing an owned value while it is borrowed
|
Medium
|
Primitives
|
|
|
Accumulate enum variants in a recursive macro
|
Hard
|
Primitives
|
|
|
Adding context without anyhow
|
Hard
|
Framework
|
|
|
A logical-time reactor: timers without a clock
|
Hard
|
End-to-End
|
|
|
A macro-generated FFI binding layer
|
Hard
|
End-to-End
|
|
|
A mini DSL: compile-time expression evaluation
|
Hard
|
Primitives
|
|
|
any, all, find, position: audit a list of records
|
Easy
|
Primitives
|
|
|
Arc: shared ownership across threads
|
Easy
|
Primitives
|
|
|
Arrays: the length is part of the type
|
Easy
|
Primitives
|
|
|
ASCII search without lowercase copies
|
Easy
|
Primitives
|
|
|
A single-producer single-consumer ring buffer
|
Hard
|
End-to-End
|
|
|
Associated type or generic parameter?
|
Hard
|
Primitives
|
|
|
A store-buffer memory-model interpreter
|
Hard
|
Research
|
|
|
Async recursion, async closures, and streams
|
Hard
|
Research
|
|
|
Atomics: counters, flags and fetch_*
|
Medium
|
Primitives
|
|
|
Balanced ranges: the arithmetic before the threads
|
Easy
|
Primitives
|
|
|
Barrier: keeping workers in lock step
|
Medium
|
End-to-End
|
|
|
BinaryHeap is a max-heap, and Reverse is the fix
|
Medium
|
Primitives
|
|
|
Binding values with @ and or-patterns
|
Medium
|
Primitives
|
|
|
Blanket implementations: shared behavior and overlap
|
Hard
|
Primitives
|
|
block_on: poll a future to completion
|
Easy
|
Primitives
|
|
|
bool and char
|
Easy
|
Primitives
|
|
|
Borrowing through Option
|
Medium
|
Primitives
|
|
|
Borrow it or own it: your first lifetime decision
|
Easy
|
Primitives
|
|
|
Bounds checks: five safe ways to express access
|
Hard
|
End-to-End
|
|
|
Box<dyn Trait>: trait objects, DSTs and dynamic dispatch
|
Medium
|
Primitives
|
|
|
Boxed errors and downcasting
|
Medium
|
Primitives
|
|
|
BTreeMap range queries
|
Medium
|
Primitives
|
|
|
Build a byte index with one allocation
|
Easy
|
Primitives
|
|
|
Build a configuration from defaults and overrides
|
Easy
|
Primitives
|
|
|
Build a CSV record with one output buffer
|
Easy
|
Primitives
|
|
|
Build a generic stack with conditional methods
|
Medium
|
Primitives
|
|
|
Build a module tree and inspect its paths
|
Easy
|
Primitives
|
|
|
Build a report with a reusable string buffer
|
Medium
|
End-to-End
|
|
|
Build a ring buffer with MaybeUninit
|
Hard
|
Framework
|
|
|
Build a safe mutable-slice split
|
Medium
|
Primitives
|
|
|
Build a spinlock from AtomicBool and UnsafeCell
|
Hard
|
End-to-End
|
|
|
Build a test runner that catches panics
|
Hard
|
Framework
|
|
|
Build a vector with allocation, push and pop
|
Hard
|
Framework
|
|
Build Cell<T> and RefCell<T> from scratch
|
Hard
|
Research
|
|
|
Build FizzBuzz strings with an if expression
|
Easy
|
Primitives
|
|
|
Build Rc<T> and RefCell<T> from scratch
|
Hard
|
End-to-End
|
|
|
Build tree paths with an arena and Rc
|
Hard
|
End-to-End
|
|
|
Build vector, pattern-matching and map macros
|
Medium
|
Primitives
|
|
|
Calling C functions through safe Rust wrappers
|
Medium
|
Framework
|
|
|
Cancelling a future by dropping it
|
Medium
|
Framework
|
|
Cancel safety, blocking, and locks across .await
|
Hard
|
End-to-End
|
|
|
Capstone: an async executor with a logical-time reactor
|
Hard
|
End-to-End
|
|
|
Capstone: an ownership-only job scheduler
|
Hard
|
End-to-End
|
|