Master Rust.

Rust mastery exercises. Become your team's resident Rust expert.

Build your own BitTorrent
Build your own BitTorrent

Learn about .torrent files and the famous BitTorrent protocol. Implement your own BitTorrent client in Rust.

Decode bencoded strings
Decode bencoded integers
Decode bencoded lists
Decode bencoded dictionaries
Parse torrent file
Calculate info hash
Piece hashes
Discover peers
Peer handshake
Download a piece
Download the whole file
Build your own DNS server
Build your own DNS server
Setup UDP server
Write header section
Write question section
Write answer section
Parse header section
Parse question section
Parse compressed packet
Forwarding Server
Build your own HTTP server
Build your own HTTP server
Bind to a port
Respond with 200
Respond with 404
Respond with content
Parse headers
Concurrent connections
Get a file
Post a file
Build your own grep
Build your own grep

Learn about regular expressions and how they're evaluated. Implement your own version of grep in Rust.

Match a literal character
Match digits
Match alphanumeric characters
Positive Character Groups
Negative Character Groups
Combining Character Classes
Start of string anchor
End of string anchor
Match one or more times
Match zero or one times
Single Backreference
Multiple Backreferences
Nested Backreferences
Build your own Redis
Build your own Redis

Discover concurrent programming in Rust while also learning about TCP servers, network programming, and the Redis Protocol.

Bind to a port
Respond to PING
Respond to multiple PINGs
Handle concurrent clients
Implement the ECHO command
Implement the SET & GET commands
RDB file config
Read a key
Read a string value
Read multiple keys
Read multiple string values
Read value with expiry
Build your own Docker
Build your own Docker

Learn what a Docker image really is, and how it's stored in the Docker registry. Get your feet wet with systems programming in Rust. Learn about chroot, kernel namespaces & more.

Execute a program
Wireup stdout & stderr
Handle exit codes
Filesystem isolation
Process isolation
Fetch an image from the Docker Registry
Build your own Git
Build your own Git

Dive into the internals of Git. Discover how Git stores and moves around data, its transfer protocols, and more. A unique exercise in making network requests with Rust.

Initialize the .git directory
Read a blob object
Create a blob object
Read a tree object
Write a tree object
Create a commit
Clone a repository
Build your own SQLite
Build your own SQLite

Learn about B-Trees, the foundation of every relational database. Explore Rust's API for reading/writing files, and handling custom file formats.

Print page size
Print number of tables
Print table names
Count rows in a table
Read data from a single column
Read data from multiple columns
Filter data with a WHERE clause
Retrieve data using a full-table scan
Retrieve data using an index
Many more to come...
coming soon
We release new challenges based on user votes. Let us know what you'd like to see next!
challenge voting
Vote on upcoming challenges