[Rust Series 1] Why Study Rust Now?

한국어 버전

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

  1. ownership: The core rule Rust uses to track who owns each value and when it gets cleaned up as a scope ends
  2. borrowing: Temporarily gaining access to a value through references while leaving ownership untouched
  3. Cargo: The default tool that creates, builds, runs, and tests Rust projects

Terms coming up soon

  1. lifetime: The rule that explains how long references stay valid; we dig in during Session 14.
  2. trait: An interface-like concept that states what behavior a type supports; it arrives in Session 13.
  3. 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 syntaxVariables · functions · control flowRust coreOwnership · borrowing · enumStructuringCollections · error handling · traitExpansionSmart pointers · concurrency · CLI

"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.

Live Practice

Rust Practice Sandbox

CodeSandbox

Run the starter project in CodeSandbox, compare it with the lesson code, and keep experimenting.

Rust startercargoterminal
  1. Fork the starter and open src/main.rs
  2. Paste the lesson code and run cargo check plus cargo run in order
  3. Change types, values, or borrowing flow and compare the compiler feedback with the output

Rust practice here is mainly terminal-driven rather than browser-preview driven. Lessons that need multiple files or extra crates may require a bit more setup inside the starter.

Practice

  • Follow along: Look at the roadmap table and pick the word you know the least about among ownership, borrowing, or trait, then write a one-line guess of its meaning.
  • Extend: Think of school or personal projects where you need both performance and fewer bugs, and list three tools that could benefit from being rebuilt in Rust.
  • Debug: Imagine let language = "Rust"; language = "Go";, then explain why Rust tries to block reassignment on immutable variables by default.
  • Definition of done: Be able to describe Cargo, ownership, borrowing, and mut in one sentence each and recite the study order you plan to follow.

Wrap-up

Rust is worth learning not because it is a "hard systems language" but because it helps you tackle hard problems safely. The rules may feel strict at first, yet once you understand why they exist, your designs become clearer. Next up: preparing Rust on macOS, creating your first project, and running it with cargo.

💬 댓글

이 글에 대한 의견을 남겨주세요