New idea, rough notes, work in progress
Learning Rust
Notes and resources as I learn Rust programming - from ownership to building real projects
Starting my Rust learning journey in 2025. These are living notes that I’ll refine as I go from complete beginner to building real systems.
Why Rust?
I chose Rust for a few specific reasons:
- Memory safety without GC — Predictable performance for systems programming
- Zero-cost abstractions — High-level ergonomics, low-level control
- WASM support — Run in browsers at near-native speed
- Error messages — The compiler actually teaches you
Info
My goal isn’t to become a Rust expert overnight. It’s to understand systems programming concepts deeply enough to write efficient, safe code.
Resources I’m Using
The Rust Book
The official guide — comprehensive and well-written
Rust by Example
Learn through runnable code samples
Exercism Rust Track
Hands-on practice with mentor feedback
rust-analyzer
IDE support that makes learning easier
Initial Impressions
The borrow checker is both frustrating and enlightening. It forces you to think about ownership and lifetimes in ways other languages don’t.
Expect Frustration
The first week is rough. You’ll fight the compiler constantly. Then something clicks and you start thinking in ownership terms.
Current Sticking Points
| Concept | Status | Notes |
|---|---|---|
| Lifetime annotations | 🟡 Confused | Still wrestling with 'a syntax |
String vs &str | 🟡 Getting it | Use String for owned data, &str for borrowed |
| Modules/crates | 🔴 Stuck | The module system is complex |
String vs &str Rule of Thumb
Use String when you need ownership (heap-allocated, growable). Use &str for string slices/views into existing data.
Project: DNS Server
I’m not just reading — I’m building. My first real project is a DNS server from scratch.
What it does:
- Parses DNS packets byte-by-byte
- Handles UDP sockets
- Implements recursive resolution
Info
Building a DNS server taught me more about binary protocols than any tutorial could. See the project at github.com/HeyItWorked/dns-server-rust
Next Steps
- Build a small CLI tool (done: word counter)
- Try WebAssembly compilation (done: basic setup)
- Contribute to an open source project
- Build something with async/await (Tokio)
Last updated: February 2025