You have read through Rust basics and done some exercises.
Now you want to build some actual projects and get hands-on experience.
Here's a list of 15 curated projects, ordered by difficulty, to help you:
Pick a project, start building, and deepen your Rust expertise.
A terminal app to track tasks without cmd/alt-tabbing is perfect for developers who live in the terminal.
Add features to make it more useful.
You'll find that Rust forces you to handle potential issues like missing files or invalid input, ensuring reliable code.
Take a look at this app.
Skills you'll pick up - File I/O, error handling, testing, iterators
Web scrapers can monitor price changes, tickets and limited drops so you get notified before everyone else.
Try to extract product data from this dummy e-commerce site.
On real sites, you'll face problems like client-side rendering and cookie walls.
You can improve your app to scrape Airbnb using a webdriver with thirtyfour.
While scraping speed is independent of programming language, Rust's iterators and functional paradigm simplify data searching and make it intuitive.
Check out this source code.
Skills you'll pick up - HTML parsing, web scraping, functional programming
Compression is everywhere from email storage to video streaming. A good way to understand the fundamentals is by compressing a text file.
Create a program to -
You can use any effective compression algorithm like Huffman Coding.
Rust's bit-level control and parallelism will let you optimize beyond traditional tools. Use a large .txt file and measure how your program performs.
This Rust code outperforms zip in both compression rate and speed.
Skills you'll pick up – Lossless compression, bit control, parallel computation
Create a chat room to hide your conversations from big tech servers and the powers that be. (For legal purposes, this is a joke.)
You can now add security.
Rust's async model and lightweight concurrency make it great for building chat apps.
Check out this neat chat app built in Rust.
Skills you'll pick up – Networking, websockets, async programming, concurrency
Apps today let you search through collections of text documents like chats, news articles, and emails. Build a search engine to understand the basics.
You can start with a program that ranks text documents against a query.
Add spelling correction and predictive search to improve search experience.
Here's a sample dataset of Wikipedia articles you can work with.
Add a regex mode with Rust's regex engine which uses finite automata and SIMD to make it blazing fast. ripgrep uses it to outperform grep.
Check out this implementation of a search engine in Rust.
Skills you'll pick up – Text processing, search algorithms, query optimization
Building an API is a rite of passage in any language. Time to do it in Rust.
For example, you can build a REST API to manage dog walking bookings.
Use a NoSQL database like MongoDB to store the data.
Make it production-ready -
Rust's async runtime and type safety make it ideal for building fast, reliable API servers.
With Tokio's async runtime, you can handle many requests concurrently without blocking threads.
Check out this guide.
Skills you'll pick up – API dev, async programming, MongoDB, web frameworks
Build your own user authentication and see what it entails.
Here's what you can implement -
You can also try -
The debate between sessions vs JWTs for auth has been going on for years - this video breaks it down.
Rust's ownership model eliminates some common security flaws like use-after-free and buffer overflows.
Its lifetimes and borrow checker enable you to manage sessions without worrying about memory leaks.
Check out this guide with source code. For JWT auth, check this.
Skills you'll pick up – Auth, password hashing, sessions, middleware
Reinvent the wheel and build a lightweight Git clone that tracks changes in source code. (because understanding Git internals is worth it)
To do this, you must read about .git directories, blobs, trees and commits.
Few features you can start with-
You can then implement git clone, which is more complex.
Rust's zero-cost abstractions let you manage Git's object storage efficiently, with no runtime overhead.
Take a look at this source code.
Skills you'll pick up – Git internals, object storage, hashing, data structures
Decentralized file sharing powers everything from Linux ISOs to, well… you know. Build a BitTorrent client to see how it all works.
You first need to understand the BitTorrent protocol.
It might be a good idea to start with single-file torrents.
You'll need to implement -
You can use this sample single-file torrent for a txt file.
Once you can download it, add support for -
Rust ensures memory safety without a garbage collector, enabling low latency and reliable performance while handling peers concurrently.
Watch Jon Hoo build a client in Rust. Here's the source code.
Skills you'll pick up – P2P networking, hashing, low-level data transmission
Build an app for video calls and learn how to leverage WASM.
Here's what you can implement -
You can use WebRTC to handle video and audio streaming.
The frontend can be a simple HTML page with some buttons, and video elements.
You can also add features like -
Rust-to-WASM helps integrate Rust with projects written in other languages. Rust can then replace slow parts with faster, memory-efficient code.
Check out this source code.
Skills you'll pick up – WebRTC, Rust-to-WASM, async networking, peer connections
Build a program that solves Wordle, with the help of information theory.
This challenge comes from the Jon Gjengset YouTube channel.
To get started - watch this video to understand the algorithm. get the Wordle dictionary and list of Wordle answers. download the Google 1-grams dataset to get word occurrences.
Once you are ready,
Benchmark performance using hyperfine and improve it as much as possible.
Rust excels at high-performance tasks, and this project gives you hands-on experience optimizing computations over a large search space.
Watch Jon's video as he optimizes the solver, and try to outperform his code.
Skills you'll pick up – Performance optimization, probability, benchmarking
Writing SQL is easy. But writing the engine that runs it is not.
Build a simple SQL engine that reads .db files and executes queries.
You can start here -
You need to understand B-trees and how SQLite stores data on disk.
Try running this query on companies.db with your engine in less than 4 seconds.
$ ./your_program.sh companies.db "SELECT id, name FROM companies WHERE country = 'eritrea'"
121311|unilink s.c.
2102438|orange asmara it solutions
5729848|zara mining share company
6634629|asmara rental
You can also extend support for more clauses and query optimization.
Rust's memmap2 enables efficient SQLite page access with direct RAM-speed B-tree traversal instead of reading the entire file into memory.
Check out Brooks Patton's implementation.
Skills you'll pick up – B-trees, SQL engines, SQLite internals, indexing
Build an interpreter for Lox, a simple scripting language, and understand how languages come to life.
The project comes from Crafting Interpreters by Robert Nystrom.
Before starting, read the welcome section of the book here -
Building an interpreter involves complex engineering and some novel concepts.
Here is an overview of the steps -
Once it is running, try optimizing it or adding new features-
Rust's enum + match approach makes it easier to define and process syntax tree nodes efficiently.
It manages interpreter state without GC, making you consider lifetimes, references, and memory safety in ways uncommon to dynamic languages.
Jon Hoo built this over an 8-hour YouTube stream. Here's the code.
Skills you'll pick up – Tokenization, ASTs, tree-walk interpreters
Build a very basic web browser from scratch. No Chromium, Gecko, or WebKit.
As the first goal, you can match how a real browser renders this HTML file.
You can then push further -
Rust's memory safety and performance make it a good choice for browser engines. Servo, Mozilla's research browser, is written in Rust.
Josh On Design's blog series walks through building a Rust browser engine.
Skills you'll pick up – Parsing, rendering, layout algorithms, systems programming
Run the first Super Mario Bros on it's original hardware that you emulate in software.
To do this, you'll have to create an NES emulator -
This NES ebook can help you implement all the steps.
Use these ROMs to test and debug your code.
Start by running Donkey Kong as your first goal.
Then add support for Super Mario Bros and any other NES games you want.
You can complete your emulator by adding -
Rust lets you write high-level, expressive code (like pattern matching for CPU opcodes or iterators for memory access) without sacrificing performance.
The compiler optimizes them, making your emulator as fast as one written in C.
At the same time, Rust's borrow checker ensures safe memory access, preventing common emulator bugs like use-after-free or buffer overflows that are common in C/C++.
Check out this NES emulator written in Rust.
Skills you'll pick up – CPU emulation, memory management, binary parsing, graphics rendering, low-level systems programming.
Tech leaders are choosing Rust to build and maintain critical systems:
At the same time, the Rust community uses it for projects like :
If you are a programmer, mastering Rust now makes a lot of sense.
By completing these projects, you'll gain the skills to build everything from high-performance APIs to game engines, compilers, and creative tools.
What's next?
Keep building, keep exploring, and most importantly, enjoy the journey!