learn by writing real Rust

Get fluent in Rust,
one challenge a day.

Bite-size challenges compiled by a real rustc in the cloud. No setup, no tutorials to skim - just the borrow checker, a failing test, and you.

KMAJ
12,400 rustaceans practicing · 140 challenges · 1,200,000 submissions
ring_buffer.rs▸ cargo test
1 2 3 4 5 6 7 8
impl <T> Iterator for RingBuf<T> { type Item = T; fn next(&mut self) -> Option<T> { // yield oldest → newest, no alloc let item = self.buf[self.head]; Some(item) } }
4 passed0 failed · finished in 0.18s
the daily

Everyone solves the same puzzle today

A fresh, hand-picked challenge drops at midnight. Keep your streak, climb the daily board, and compare your solution with the rest of the cohort.

curriculum

5 tracks, first println! to async

Each track is an ordered run of challenges, so every new concept builds on the one you just earned. Start anywhere - we'll remember where you left off.

all 5 tracks
how it works

Built on the real Rust toolchain

01

Real rustc, not a sandbox

Your code is compiled by the actual Rust toolchain in the cloud. The errors you see are the errors you'll fight in production - E0502 and all.

02

Tests, not vibes

Every challenge ships a hidden test suite. You're done when it's green - no guessing whether your Iterator actually yields the right order.

03

Streaks that compound

Show up daily and keep the flame going. A few minutes a day adds up, and the borrow checker gets less intimidating with every rep.

Be the First to Know

Your first challenge is already waiting.

A new challenge every day. No setup, no cargo install - open the editor and write a line of Rust.