Rust sits close to the system like C, yet it tries to block memory mistakes before you make them. This post explains why we picked Rust as the next language in the Coding category and how to study it without getting stuck. Session 1 focuses less on memorizing syntax and more on clarifying which problems Rust solves and in what order you should pick up the language so the rules feel less overwhelming.
Terms to lock in now
- ownership: The core rule Rust uses to track who owns each value and when it gets cleaned up as a scope ends
- borrowing: Temporarily gaining access to a value through references while leaving ownership untouched
- Cargo: The default tool that creates, builds, runs, and tests Rust projects
Terms coming up soon
- lifetime: The rule that explains how long references stay valid; we dig in during Session 14.
- trait: An interface-like concept that states what behavior a type supports; it arrives in Session 13.
- pattern matching: A way to branch based on the shape of a value; we cover it in Session 9.
Core ideas
Here is the Rust track roadmap. The key is to see Rust not as "safe C syntax" but as a language where you design structure through ownership and the type system.
| Session | Topic | Core skill |
|---|---|---|
| 01 | Why study Rust now | Understand the motivation and roadmap |
| 02 | Prepare the Rust toolchain and first run | Learn rustup, cargo, and the build flow |
| 03 | Variables, immutability, basic types | Practice let, mut, scalars, tuples, arrays |
| 04 | Functions and control flow | Use fn, if, loop, while, for |
| 05 | Ownership basics | Build intuition for move, scope, drop |
| 06 | References and borrowing | Understand &, &mut, and the borrowing rules |
| 07 | Slices and strings | Tell String, &str, and slices apart |
| 08 | Structs and methods | Work with struct, impl, and method design |
| 09 | Enums and pattern matching | Use enum, match, and Option |
| 10 | Working with collections | Handle Vec, HashMap, and iteration |
| 11 | Error handling basics | Practice Result, panic!, and the ? operator |
| 12 | Modules and package layout | Use mod, crate, and file splits |
| 13 | Generics and traits | Design reusable types and behavior |
| 14 | Lifetime primer | Read reference validity |
| 15 | Iterators and closures | Process data in a functional style |
| 16 | Smart pointers and heap data | Build a feel for Box, Rc, RefCell |
| 17 | Testing and docs | Run cargo test and write doc comments |
| 18 | Concurrency basics | Understand threads, channels, Send/Sync |
| 19 | First taste of async | Learn async, await, and runtimes |
| 20 | Capstone: build a safe CLI | Combine files, error handling, modules, tests |
Sessions 1–4 give you grammar and execution flow, 5–9 are the core ownership and type blocks, 10–15 connect collections with abstraction and functional tools, and 16–20 expand into memory models, testing, concurrency, and a capstone.
We intentionally focus on syntax and flow in Sessions 1–4 before diving deep into ownership and borrowing in Session 5. If we dumped every restriction at once you would get stuck fast, so we first build rhythm and then enter Rust's philosophy.
- After Sessions 1–4 you can write tiny console programs and read the basic flow of Rust syntax.
- After Sessions 5–9 you can describe Rust-style code with ownership, borrowing, structs, and enums.
- After Sessions 10–15 you can design more realistic program structures with collections, error handling, modules, traits, and lifetimes.
- After Sessions 16–20 you can combine smart pointers, tests, concurrency, async, and ship a safe CLI tool.
The series philosophy fits in one sentence: "Rust matters less for its syntax and more for being able to explain why the language enforces strict rules."
- Safety-first: Learn the rules that force you to treat memory and references with care.
- Small examples, clear constraints: Even short snippets come with explanations of why they compile or fail.
- Practical expansion: Strings, collections, error handling, modules, testing, and concurrency naturally build toward real tools.
"Core skill" on the roadmap means "what you should be able to explain about the compiler's constraints once you finish that session."
Code examples
The first thing to notice is that Rust compiles before it runs. Here is the smallest Rust program.
fn main() {
println!("Hello, Rust!");
}
main is the entry function, and println! is a macro that prints strings. The exclamation mark is a Rust-specific detail that stands out early.
Rust defaults to immutable values, so the language feels different from the start.
fn main() {
let language = "Rust";
let mut year = 2026;
println!("language = {}", language);
println!("year = {}", year);
year += 1;
println!("next year = {}", year);
}
You declare variables with let. Add mut if you want to change the value. Rust protects "values that must not change by accident" by making immutability the default.
Ownership is both the biggest reason to learn Rust and the place most people get blocked. For Session 1 you do not have to master every rule; just remember that Rust strictly tracks whether a value is copied, moved, or borrowed. Specifically, borrowing allows many immutable references but restricts mutable references much more.
fn main() {
let score = 95;
let borrowed = &score;
println!("score = {}", score);
println!("borrowed = {}", borrowed);
}
Here &score means "borrow the value without giving it away." Before we go deep on borrowing in Session 6, it's enough to know that & creates a reference and Rust guards references tightly.
Why it matters
The point of learning Rust is not just to chase a trendy systems language.
- It is a strong choice for systems software, CLIs, servers, and embedded work where memory safety and performance both matter.
- It surfaces memory mistakes at compile time, catching bugs that are common in C or C++.
- Once you understand ownership, borrowing, and traits, your perspective on type design and resource management becomes sharper in every other language.
- The compiler front-loads many checks, so the ramp can feel steep at first.
This post highlights three essentials.
- Rust is not simply a fast language; it deliberately bakes safety constraints into how you design programs.
- Ownership and borrowing anchor the entire series.
- The study plan expands smoothly from basic syntax to building a safe CLI tool.
We follow these blocks in order:
- Foundation block (1–4): Learn variables, types, functions, and control flow to build syntax intuition.
- Core block (5–9): Internalize ownership, borrowing, strings, structs, and enums—the heart of Rust.
- Structure block (10–15): Connect collections, error handling, modules, traits, lifetimes, and iterators for realistic designs.
- Expansion block (16–20): Explore smart pointers, testing, concurrency, async, and the capstone CLI to see Rust's reach.
Even tiny examples pave the way for the next session's constraints and compiler errors, so record why a snippet succeeds or fails as you go.
Practice in CodeSandbox
The sandbox below uses CodeSandbox's Rust starter. Move the main code into src/main.rs, then compare cargo check and cargo run so you can read the compiler feedback beside the final output.
💬 댓글
이 글에 대한 의견을 남겨주세요