πŸ—ΊοΈ

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:

  1. minigrep β†’ build fundamentals
  2. todo CLI β†’ practice struct/enum
  3. REST API (axum) β†’ learn by comparing with Rails
  4. Chat server β†’ async + concurrency
  5. 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

1

Beginner: minigrep, todo CLI, number game, unit converter, MD→HTML

2

Intermediate: jq clone, file watcher, HTTP server, REST API, chat, SSG, image processing

3

Advanced: DB engine, interpreter, WASM, ray tracer, OS kernel, game

4

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

Use Cases

When stuck on what to do after learning Rust basics Looking for Rust projects for your portfolio