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