🌱
seedling

New idea, rough notes, work in progress

Learning Rust

Notes and resources as I learn Rust programming - from ownership to building real projects

#rust #programming #learning

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

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

ConceptStatusNotes
Lifetime annotations🟡 ConfusedStill wrestling with 'a syntax
String vs &str🟡 Getting itUse String for owned data, &str for borrowed
Modules/crates🔴 StuckThe 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