🎓 A1Learner
🔍

Rust Capstone

A capstone is a final project that pulls a whole course into one build. Five projects follow, each a little bigger than the last.

The roadmap, as data

Five projects, each a little bigger than the last. The closing program below prints this same list:

let roadmap = ["grep clone", "API client", "web crawler", "chat server", "published crate"];

One new subsystem per step

Each project reuses earlier tools and adds exactly one new thing:

// 1 CLI + files + tests    2 HTTP + serde + cache
// 3 threads or Tokio       4 async TCP + broadcast
// 5 docs + semver + CI

Example

fn main() {
    let roadmap = ["grep clone", "API client", "web crawler", "chat server", "published crate"];
    for (i, step) in roadmap.iter().enumerate() { println!("Capstone {}: {}", i + 1, step); }
}

Key points

  • Project 1 — a grep clone: read command-line arguments with clap, read files, return Results, write integration tests
  • Project 2 — a JSON API client with a cache: serde for data, reqwest for HTTP, a HashMap cache, custom errors
  • Project 3 — a concurrent web crawler: threads and channels, or Tokio, with an Arc<Mutex<HashSet>> of visited pages
  • Project 4 — a chat server: Tokio TCP, broadcast channels, graceful shutdown
  • Project 5 — publish a library: documentation and doctests, semver discipline, and CI running fmt, clippy, and test
  • Reading is only half of learning — the other half is building something real.
  • The next and final lesson, Rust Next Steps, draws the wider map for anyone who has finished the projects
  • It shows the manuals to keep open
  • It shows the directions beyond projects
  • Those are embedded, WebAssembly, and the deep end of the language

In this example, the program simply prints the roadmap. roadmap is an array of the five project names. The loop walks it with .iter().enumerate(), pairing each name with its position. Adding 1 turns the positions into step numbers, and the output lists Capstone 1 through Capstone 5 in order. Small code, but it uses the same pieces. The pieces are arrays, iterators, enumerate. The real projects will lean on them from day one.

Note

Do not skip ahead

The order is the lesson: sync first, then HTTP, then concurrency, then async, then sharing your work

Each step makes the next one feel small

Try it Yourself

Edit the code, then press Run.

Running is simulated · Rust Playground

Exercise

Which order builds skills most safely through the capstones?