Build a CLI tool
A command-line HTTP client with subcommands, a config file and real error messages. Start →
// count how often each word appears
let mut counts = HashMap::new();
for word in text.split(' ') {
*counts.entry(word).or_default() += 1;
}
println!("distinct words: {}", counts.len());
Hacking with Rust has two halves. Project tracks take you from nothing to something that runs — a CLI tool, an API, a desktop app, firmware. The reference is what you open at 11pm when the compiler is shouting at you.
Build a CLI tool
A command-line HTTP client with subcommands, a config file and real error messages. Start →
A production API with Axum and SQLx
Postgres migrations, validation, tracing, integration tests, Docker, deployment. Start →
A desktop app with Tauri
A local Markdown notes app: React front end, Rust core, SQLite, full-text search. Start →
Speed up React with WebAssembly
Move the slow part of a JavaScript app into Rust, and measure what actually changed. Start →
Embedded Rust on STM32
From blinking an LED to I2C sensors, async tasks and power management. Start →
Write a toy database
A persistent key-value store, with compaction, Bloom filters and benchmarks. Start →
Ownership and borrowing
Moves, borrows, mutable references and lifetimes — the chapter most readers arrive on. Read it →
Compiler error messages
Every error that sends you to a search engine, with the exact compiler output and the fixes that actually compile. Browse error codes →
Starting from zero
Whether Rust is worth your time, what people ship with it, and how to run it without installing anything. Start here →
Looking for something specific?
Press Ctrl+K (or ⌘+K) to search every article on the site, offline and instantly.
Code on this site is compiled and tested before it is published. When a page shows a
compiler error, that is the real output from rustc, not something
reconstructed from memory.
Knowing that E0382 means “use of moved value” does not help you ship. Each
error page shows the several ways to fix it, and tells you which one to pick.
Reference pages take three minutes. Track articles take longer, because you are building something — but each one still ends with code that runs.