|
|
Adding context without anyhow
|
Hard
|
Framework
|
|
|
|
A generic Stack, and conditional impl blocks
|
Medium
|
Primitives
|
|
|
|
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 gives you sharing, not mutability
|
Easy
|
Primitives
|
|
|
|
Arc: shared ownership across threads
|
Easy
|
Primitives
|
|
|
|
Arrays: the length is part of the type
|
Easy
|
Primitives
|
|
|
|
A single-producer single-consumer ring buffer
|
Hard
|
End-to-End
|
|
|
|
AsRef, Borrow, and signatures your callers can actually use
|
Medium
|
Primitives
|
|
|
|
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
|
|
|
|
Auto-vectorisation and why floating-point addition blocks it
|
Hard
|
End-to-End
|
|
|
|
Bake-off: the same tree, an arena and an `Rc` graph
|
Hard
|
End-to-End
|
|
|
|
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 with @, and what or-patterns demand of bindings
|
Medium
|
Primitives
|
|
|
|
Blanket impls, and why you can never carve out an exception
|
Hard
|
Primitives
|
|
|
|
`block_on`: the smallest thing that can run a future
|
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: when they cost, and five safe ways to remove them
|
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 spinlock from AtomicBool and UnsafeCell
|
Hard
|
End-to-End
|
|
|
|
Build `Cell<T>` and `RefCell<T>` from scratch
|
Hard
|
Research
|
|
|
|
Building std's macros: vec!, matches!, a HashMap literal
|
Medium
|
Primitives
|
|
|
|
Build Rc<T> and RefCell<T> from scratch
|
Hard
|
End-to-End
|
|
|
|
Build your own #[test]: catching panics deterministically
|
Hard
|
Framework
|
|
|
|
Callbacks and TT bundling
|
Hard
|
Primitives
|
|
|
|
Calling C from Rust: libc is already linked
|
Medium
|
Framework
|
|
|
|
Cancellation is just: stop polling and drop
|
Medium
|
Framework
|
|
|
|
Cancel safety, blocking, and locks across `.await`
|
Hard
|
End-to-End
|
|
|
|
Capacity and pre-sizing, graded
|
Easy
|
Primitives
|
|
|
|
Capstone: a fully-typed fallible parser
|
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
|
|
|
|
Capstone: audit and repair an unsound abstraction
|
Hard
|
End-to-End
|
|
|
|
Capstone: build a thread pool
|
Hard
|
End-to-End
|
|
|
|
Cargo features and the additivity rule
|
Hard
|
Framework
|
|
|
|
Case-insensitive search without allocating
|
Easy
|
Primitives
|
|
|
|
CAS loops: compare_exchange and fetch_update
|
Hard
|
Framework
|
|
|
|
Casting with as: truncation, sign reinterpretation, saturation
|
Medium
|
Primitives
|
|
|
|
`Cell<T>`: mutation by moving values in and out
|
Medium
|
Primitives
|
|