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.

The same card greets you in every track and track page - wherever you are, today's challenge is one click away.
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
leaderboard

This week's top rustaceans

XP resets every Monday. Solve the daily, clear a track, and climb - the top three wear the crown until the next reset.

full leaderboard
#RustaceanXP this week
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.

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.