What You Can Build with Rust — Project Roadmap from Beginner to Advanced
When you have no idea what to build after Hello World
You've gone through Rust syntax. Read The Rust Book. But "what do I build now?" feels overwhelming. In Ruby, rails new gives you something immediately. Rust doesn't have that.
Here are real projects organized by difficulty, with which Rust concepts each one exercises.
🟢 Beginner — Getting Comfortable with the Compiler
Goal: get used to fighting the compiler. Small project scope is fine.
1. grep clone (minigrep)
A classic from The Rust Book itself. CLI tool that searches for strings in files.
You'll learn: file I/O, Result error handling, command line args, iterators
$ minigrep "pattern" filename.txt
2. todo CLI
Add/delete/list tasks from terminal. Save to file (JSON or text).
You'll learn: struct, enum, file read/write, serde (JSON serialization)
$ todo add "Study Rust"
$ todo list
$ todo done 1
3. Number guessing game
Generate random number, give hints until user guesses correctly.
You'll learn: user input (stdin), random (rand crate), loop, match
4. Unit converter
Temperature (C↔F), length (km↔mile), weight (kg↔lb) conversion CLI.
You'll learn: enum for units, function design, type conversion
5. Markdown → HTML converter
Convert simple markdown (headings, bold, lists) to HTML.
You'll learn: string parsing, String vs &str, regex (regex crate)
🟡 Intermediate — Building Real Tools
Goal: production-quality completeness. Error handling, tests, docs.
6. JSON formatter / jq clone
Pretty-print JSON or extract specific fields.
You'll learn: serde_json, trait implementation, recursive structure handling
$ cat data.json | rjq '.users[0].name'
7. File watcher
Watch directory for changes, run command on change. Like Ruby's guard gem.
You'll learn: notify crate, event loop, process execution (std::process)
$ fwatch ./src "cargo test"
8. HTTP server (from scratch)
Parse HTTP requests from raw TCP sockets. No framework.
You'll learn: std::net::TcpListener, threads, HTTP protocol, buffer management
Doing this once makes you understand what axum/actix actually do for you.
9. REST API server
CRUD API with axum or actix-web. Including DB connection.
You'll learn: axum/actix-web, sqlx (DB), async/await, middleware, JSON serialization
GET /api/users
POST /api/users
GET /api/users/:id
DELETE /api/users/:id
As a Rubyist, building this while comparing with Rails API is fun.
10. Chat server (TCP/WebSocket)
Multiple clients connect and exchange messages.
You'll learn: tokio (async), Arc/Mutex (shared state), channels (mpsc), WebSocket
11. Static site generator (SSG)
Read markdown files, generate HTML site. Mini Jekyll/Hugo.
You'll learn: filesystem traversal, template engine (tera), markdown parsing (pulldown-cmark)
12. Image resizer CLI
Read images, resize, save. Batch processing support.
You'll learn: image crate, binary data handling, parallel processing (rayon)
$ imgrs resize --width 800 *.jpg --output ./resized/
🔴 Advanced — Where Rust's Real Power Shows
Goal: projects that justify choosing Rust. Performance, safety, system-level access.
13. Database engine
B-tree based key-value store with disk persistence.
You'll learn: low-level file I/O, binary serialization, B-tree implementation, transactions
Building what SQLite does, by hand.
14. Programming language interpreter
Create your own small language. Lexer → Parser → AST → Evaluator.
You'll learn: enum for tokens/AST, recursive descent parsing, Box for recursive structures, pattern matching
The project where Rust's enum + match truly shines.
15. WASM web app
Compile Rust to WebAssembly, run in the browser. Image processing, game logic — CPU-intensive tasks.
You'll learn: wasm-bindgen, wasm-pack, JavaScript interop, memory management
16. Ray tracer
Render 3D scenes. Implement "Ray Tracing in One Weekend" in Rust.
You'll learn: vector math, parallel processing (rayon), image generation, numerical optimization
Results come out as images — high satisfaction factor.
17. OS kernel (educational)
Mini OS that boots on bare metal. Follow "Writing an OS in Rust" series.
You'll learn: no_std, inline assembly, memory management, interrupt handling
The project that makes you feel why Rust is a systems programming language.
18. Game (Bevy engine)
2D/3D game with Bevy ECS engine.
You'll learn: ECS (Entity Component System) pattern, game loop, physics engine integration, asset management
Where to Start
Coming from Ruby, this order works well:
- minigrep → build fundamentals
- todo CLI → practice struct/enum
- REST API (axum) → learn by comparing with Rails
- Chat server → async + concurrency
- WASM web app or interpreter → where Rust gets really fun
Rebuilding something you made in Ruby is also great. Same feature, vastly different implementation — the design philosophy difference becomes crystal clear.
Key Points
Beginner: minigrep, todo CLI, number game, unit converter, MD→HTML
Intermediate: jq clone, file watcher, HTTP server, REST API, chat, SSG, image processing
Advanced: DB engine, interpreter, WASM, ray tracer, OS kernel, game
Rubyist recommended order: minigrep → todo → REST API → chat → WASM/interpreter
Pros
- ✓ Each project targets specific Rust concepts (ownership, async, traits etc.)
- ✓ Following beginner→advanced order naturally builds competence
Cons
- ✗ Advanced projects require domain knowledge (DB, compilers) beyond Rust
- ✗ From intermediate, heavy crate dependencies require learning the ecosystem too